Introducción
Virtual Network Computing, o VNC, es un sistema de conexión que le permite usar su teclado y mouse para interactuar con un entorno de escritorio gráfico en un servidor remoto. Hace que la administración de archivos, software y configuraciones en un servidor remoto sea más fácil para los usuarios que aún no se sienten cómodos con la línea de comandos.
en esta guía, configurará un servidor VNC con TightVNC en un servidor Ubuntu 20.04 y se conectará a él de forma segura a través de un túnel SSH., Luego, utilizará un programa cliente VNC en su máquina local para interactuar con su servidor a través de un entorno de escritorio gráfico.
requisitos previos
para completar este tutorial, necesitará:
- Un servidor Ubuntu 20.04 con un usuario administrativo no root y un firewall configurado con UFW. Para configurar esto, siga nuestra guía de configuración inicial del servidor para Ubuntu 20.04.
- Un equipo local con un cliente VNC instalado. El cliente VNC que utilice debe admitir conexiones a través de túneles SSH:
- en Windows, puede usar TightVNC, RealVNC o UltraVNC.,
- En macOS, puede usar el Programa Integrado de uso compartido de pantalla o puede usar una aplicación multiplataforma como RealVNC.
- En Linux, usted puede elegir entre muchas opciones, como
vinagre
,krdc
, RealVNC, o TightVNC.
Paso 1-Instalar el entorno de escritorio y el servidor VNC
Por defecto, un servidor Ubuntu 20.04 no viene con un entorno de escritorio gráfico o un servidor VNC instalado, por lo que comenzará instalándolos.,
Tiene muchas opciones cuando se trata de qué servidor VNC y entorno de escritorio elige. En este tutorial, instalará paquetes para el último entorno de escritorio Xfce y el paquete TightVNC disponible en el repositorio oficial de Ubuntu. Tanto Xfce como TightVNC son conocidos por ser ligeros y rápidos, lo que ayudará a garantizar que la conexión VNC sea suave y estable incluso en conexiones de internet más lentas.,
después de conectarse a su servidor con SSH, actualice su lista de paquetes:
- sudo apt update
ahora instale Xfce junto con el paquete xfce4-goodies
, que contiene algunas mejoras para el entorno de escritorio:
- sudo apt install xfce4 xfce4-goodies
se le pide que elija un administrador de pantalla predeterminado para Xfce. Un gestor de pantalla es un programa que permite seleccionar e iniciar sesión en un entorno de escritorio a través de una interfaz gráfica., Solo usarás Xfce cuando te conectes con un cliente VNC, y en estas sesiones Xfce ya estarás conectado como tu usuario Ubuntu no root. Así que para los propósitos de este tutorial, su elección de administrador de pantalla no es pertinente. Seleccione uno y presione ENTER
.,
una vez completada la instalación, instale el servidor TightVNC:
- sudo apt install tightvncserver
a continuación, ejecute el comando vncserver
para establecer una contraseña de acceso a VNC, crear los archivos de configuración iniciales e iniciar una instancia de VNC server:
- vncserver
se le pedirá que ingrese y verifique una contraseña para acceder a su máquina de forma remota:
OutputYou will require a password to access your desktops.Password:Verify:
la contraseña debe tener entre seis y ocho caracteres. Las contraseñas de más de 8 caracteres se truncarán automáticamente.,
una vez que verifique la contraseña, tendrá la opción de crear una contraseña de solo Vista. Los usuarios que inicien sesión con la contraseña de solo Vista no podrán controlar la instancia de VNC con su ratón o teclado. Esta es una opción útil si desea demostrar algo a otras personas que usan su servidor VNC, pero esto no es necesario.
el proceso crea los archivos de configuración por defecto necesarios y la información de conexión para el servidor. Además, inicia una instancia de servidor predeterminada en el puerto 5901
., Este puerto se llama puerto de visualización, y es referido por VNC como :1
. VNC puede lanzar varias instancias en otros puertos de visualización, con :2
refiriéndose al puerto 5902
, :3
refiriéndose a 5903
, y así sucesivamente:
tenga en cuenta que si alguna vez cambie su contraseña o agregue una contraseña de solo Vista, puede hacerlo con el comando vncpasswd
:
- vncpasswd
en este punto, el servidor VNC está instalado y en ejecución., Ahora vamos a configurarlo para lanzar Xfce y darnos acceso al servidor a través de una interfaz gráfica.
Paso 2 — Configuración del servidor VNC
el servidor VNC necesita saber qué comandos ejecutar cuando se inicia. Específicamente, VNC necesita saber a qué entorno gráfico de escritorio debe conectarse.
los comandos que el servidor VNC ejecuta al inicio se encuentran en un archivo de configuración llamado xstartup
en la carpeta .vnc
en su directorio personal., El script de inicio se creó cuando ejecutó el comando vncserver
en el paso anterior, pero creará el suyo propio para iniciar el escritorio Xfce.,e VNC server está configurado, primero detenga la instancia de VNC server que se está ejecutando en el puerto 5901
con el siguiente comando:
- vncserver -kill :1
la salida se verá así, aunque verá un PID diferente:
OutputKilling Xtightvnc process ID 17648
antes de modificar xstartup
archivo, copia de seguridad del original:
- mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
ahora cree un nuevo xstartup
archivo y ábralo en un editor de texto, como nano
:
- nano ~/.vnc/xstartup
luego agregue las siguientes líneas al archivo:
#!/bin/bashxrdb $HOME/.Xresourcesstartxfce4 &
La primera línea es un proceso. En los archivos de texto sin formato ejecutables en plataformas *nix, un shebang le dice al sistema a qué intérprete pasar ese archivo para su ejecución. En este caso, está pasando el archivo al intérprete de Bash. Esto permitirá que cada línea sucesiva se ejecute como comandos, en orden.
el primer comando en el archivo, xrdb $HOME/.Xresources
, le dice al marco GUI de VNC que lea el archivo .Xresources
del usuario del servidor., .Xresources
es donde un usuario puede realizar cambios en ciertas configuraciones del escritorio gráfico, como colores de terminales, temas de cursor y representación de fuentes. El segundo comando le dice al servidor que inicie Xfce. Cada vez que inicie o reinicie el servidor VNC, estos comandos se ejecutarán automáticamente.
guarde y cierre el archivo después de agregar estas líneas. Si usted utiliza nano
, hacerlo pulsando CTRL + X
, Y
, luego ENTER
.,
para asegurarse de que el servidor VNC pueda usar este nuevo archivo de inicio correctamente, deberá hacerlo ejecutable:
- chmod +x ~/.vnc/xstartup
luego reinicie el servidor VNC:
- vncserver -localhost
observe que esta vez el comando incluye el -localhost
, que vincula el servidor VNC a la interfaz de bucle invertido de su servidor. Esto hará que VNC solo permita conexiones que se originen desde el servidor en el que está instalado.,
en el siguiente paso, establecerá un túnel SSH entre su máquina local y su servidor, esencialmente engañando a VNC para que piense que la conexión de su máquina local se originó en su servidor. Esta estrategia agregará una capa adicional de seguridad alrededor de VNC, ya que los únicos usuarios que podrán acceder a ella son aquellos que ya tienen acceso SSH a su servidor.
verá una salida similar a esta:
con la configuración en su lugar, está listo para conectarse al servidor VNC desde su máquina local.,
Paso 3: conectarse al escritorio VNC de forma segura
VNC en sí no utiliza protocolos seguros al conectarse. Para conectarse de forma segura a su servidor, establecerá un túnel SSH y luego le dirá a su cliente VNC que se conecte usando ese túnel en lugar de hacer una conexión directa.
cree una conexión SSH en su computadora local que reenvíe de forma segura a la conexión localhost
para VNC., Puede hacer esto a través del terminal en Linux o macOS con la siguiente ssh
comando:
- ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip
esto es lo que esto ssh
las opciones del comando significan:
-
-L 59000:localhost:5901
: el conmutador-L
especifica que el puerto dado en el equipo local (59000
) debe ser reenviado al host y Puerto dados en el servidor de destino (localhost:5901
, lo que significa puerto5901
en el servidor de destino, definido comoyour_server_ip
)., Tenga en cuenta que el puerto local que especifique es algo arbitrario; siempre y cuando el puerto no esté ya vinculado a otro servicio, puede usarlo como el puerto de reenvío para su túnel. -
-C
: este indicador permite la compresión que puede ayudar a minimizar el consumo de recursos y acelerar las cosas. -
-N
: esta opción indica assh
que no desea ejecutar ningún comando remoto. Esta configuración es útil cuando solo desea reenviar puertos., -
-l sammy your_server_ip
: el interruptor-l
le permite especificar el usuario con el que desea iniciar sesión una vez que se conecte al servidor. Asegúrese de reemplazarsammy
yyour_server_ip
con el nombre de su usuario no root y la dirección IP de su servidor.
Nota: Este comando establece un túnel SSH que reenvía información desde el puerto 5901
en su servidor VNC al puerto 59000
en su máquina local a través del puerto 22
en cada máquina, el puerto predeterminado para SSH., Asumiendo que siguió el prerrequisito de la guía de configuración inicial del servidor para Ubuntu 20.04, habrá agregado una regla de UFW para permitir conexiones a su servidor a través de OpenSSH.
esto es más seguro que simplemente abrir el firewall de su servidor para permitir conexiones al puerto 5901
, ya que eso permitiría a cualquiera acceder a su servidor a través de VNC. Al conectarse a través de un túnel SSH, está limitando el acceso de VNC a las máquinas que ya tienen acceso SSH al servidor.,
si está utilizando PuTTY para conectarse a su servidor, puede crear un túnel SSH haciendo clic con el botón derecho en la barra superior de la ventana de terminal, y luego haciendo clic en la opción Cambiar configuración::
encuentre la rama de conexión en el menú del árbol en el lado izquierdo de la ventana de reconfiguración de PuTTY. Expanda la rama SSH y haga clic en túneles., En las opciones que controlan la pantalla de reenvío de puertos SSH, ingrese 59000
como el puerto de origen y localhost:5901
como el destino, así:
a continuación, haga clic en el botón Agregar y luego en el botón Aplicar para implementar el túnel.
una vez que el túnel se está ejecutando, utilice un cliente VNC para conectarse a localhost:59000
. Se te pedirá que te autentiques usando la contraseña que configuraste en El Paso 1.
una vez que esté conectado, verá el escritorio Xfce predeterminado., Debería verse algo como esto:
Se puede acceder a los archivos en su directorio de inicio con el administrador de archivos o desde la línea de comandos, como se ve aquí:
Presione CTRL+C
en la terminal local para detener el túnel SSH y volver a su petición. Esto también desconectará su sesión de VNC.
ahora puede configurar su servidor VNC para que se ejecute como un servicio systemd.,
Paso 4-ejecución de VNC como servicio del sistema
al configurar el servidor VNC para que se ejecute como servicio systemd, puede iniciarlo, detenerlo y reiniciarlo según sea necesario, como cualquier otro servicio. También puede usar los comandos de administración de systemd para garantizar que VNC se inicie cuando se inicie el servidor.
primero, cree un nuevo archivo de unidad llamado /etc/systemd/system/[email protected]
:
- sudo nano /etc/systemd/system/[email protected]
el símbolo @
al final del nombre nos permitirá pasar un argumento que puede usar en la configuración del servicio., Usará esto para especificar el puerto de visualización VNC que desea usar cuando administre el servicio.
Agregue las siguientes líneas al archivo. Asegúrese de cambiar el valor de usuario, grupo, Directorio de trabajo y el nombre de usuario en el valor de PIDFILE para que coincida con su nombre de usuario:
el comando ExecStartPre
detiene VNC si ya se está ejecutando. El comando ExecStart
inicia VNC y establece la profundidad de color en color de 24 bits con una resolución de 1280×800. También puede modificar estas opciones de inicio para satisfacer sus necesidades., Además, tenga en cuenta que el comando ExecStart
nuevamente incluye la opción -localhost
.
Guardar y cerrar el archivo.
a continuación, haga que el sistema sea consciente del nuevo archivo de unidad:
- sudo systemctl daemon-reload
habilite el archivo de unidad:
- sudo systemctl enable [email protected]
el 1
después del @
sign significa sobre qué número de pantalla debe aparecer el servicio, en este caso el valor predeterminado :1
como se discutió en el paso 2.,
detenga la instancia actual del servidor VNC si todavía se está ejecutando:
- vncserver -kill :1
luego arráncela como si iniciara cualquier otro servicio systemd:
- sudo systemctl start vncserver@1
puede verificar que se inició con este comando:
- sudo systemctl status vncserver@1
Si se inició correctamente, la salida debería tener este aspecto:
su servidor VNC ahora está listo para usar cada vez que se inicie su servidor, y puede administrarlo con comandossystemctl
como cualquier otro servicio de systemd.
sin Embargo, no habrá ninguna diferencia en el lado del cliente., Para volver a conectarse, inicie su túnel SSH de nuevo:
- ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip
luego haga una nueva conexión usando su software cliente VNC a localhost:59000
para conectarse a su servidor.
conclusión
ahora tiene un servidor VNC seguro en funcionamiento en su servidor Ubuntu 20.04. Ahora podrá administrar sus archivos, software y configuraciones con una interfaz gráfica fácil de usar, y podrá ejecutar software gráfico como navegadores web de forma remota.