Virtual Network Computing (VNC) es un sistema de intercambio de pantalla utilizado para acceder a interfaces gráficas de usuario de forma remota. Utiliza el protocolo de búfer de fotogramas remoto que permite que un servidor (lado del usuario) se conecte con otro lado (cliente). VNC es seguro, confiable y funciona en todos los sistemas operativos.
RealVNC, UltraVNC, Xfce, TightVNC, por nombrar algunos, son los clientes VNC más populares utilizados hoy en día. Entre la lista de alternativas disponibles, eres libre de elegir cualquier VNC según tu conveniencia. En este tutorial, te guiaremos a través de los pasos para instalar y configurar VNC en Ubuntu 20.04. Vamos a instalar Xfce debido a su velocidad, ligereza y excelente rendimiento.
Comenzaremos configurando un servidor VNC en un Ubuntu servidor y estableciendo una conexión segura a través del túnel SSH. Finalmente, utilizaremos un programa cliente VNC en nuestra máquina local para interactuar con el servidor a través de un entorno de escritorio gráfico.
Requisitos previos
Para seguir este tutorial, necesitarás:
-
Un servidor Ubuntu 20.04 con un usuario no raíz y un cortafuegos sin complicaciones (UFW).
-
Una computadora local con un cliente VNC instalado. Además, el cliente VNC que utilizaremos se conecta a través de SSH de túneles.
Paso 1— Instalar el entorno de escritorio y el servidor VNC
A diferencia de las versiones anteriores de Ubuntu, Ubuntu 20.04 no viene con un VNC preinstalado. Como primer paso, instalaremos los paquetes necesarios desde el repositorio oficial de Ubuntu. Antes de continuar, actualicemos los paquetes existentes:
|
1 |
sudo apt update |
Ahora instalaremos Xfce y el paquete xfce4-goodies utilizando el comando:
|
1 |
sudo apt install xfce4 xfce4-goodies |
Mientras se instala el paquete, verás una pantalla que te pedirá que elijas un gestor de pantalla predeterminado para Xfce. Ignora el mensaje o establécelo como predeterminado, y luego presiona ENTER.
Un gestor de pantalla es un programa que permite a los usuarios iniciar sesión en un entorno de escritorio a través de una interfaz gráfica. En este tutorial, utilizaremos Xfce al conectarnos con un cliente VNC donde hemos iniciado sesión como un usuario de Ubuntu no raíz. Por lo tanto, la elección del gestor de pantalla no tendrá ningún impacto en nuestra instalación.
Después de la instalación de Xfce, instalaremos el servidor TightVNC:
|
1 |
sudo apt install tightvncserver |
In el siguiente paso, utiliza el comando vncserver para configurar una contraseña de acceso VNC y crear los archivos de configuración iniciales. Escribe lo siguiente para iniciar la instancia del servidor VNC:
|
1 |
vncserver |
Después de eso, configura una contraseña de entre 6 y 8 caracteres de longitud y presiona ENTER. Verás un mensaje de aviso:
|
1 2 3 4 5 |
Output Usted necesitará una contraseña para acceder a sus escritorios. Contraseña: Verificar: |
En el futuro, si deseas cambiar tu contraseña o agregar una contraseña de solo lectura, utiliza el comando:
|
1 |
vncpasswd |
A estas alturas, ya tendrás creadas todas las configuraciones predeterminadas para el servidor, y un puerto de pantalla 5901 iniciado como :1. VNC puede iniciar múltiples instancias en otros puertos de pantalla como :2, :3, y :4 refiriéndose al puerto 5902, 5903, y 5904 respectivamente:
|
1 2 3 4 5 6 7 8 9 |
Output ¿Desea usted ingresar una contraseña de solo -lectura (y/n)? (y/n)? n xauth: el archivo /home/cloudsigma/.Xauthority does no existe El nuevo 'X' escritorio es your_hostname:1 Creando el script de inicio predeterminadoscript /home/cloudsigma/.vnc/xstartup Iniciando aplicaciones especificadas en /home/cloudsigma/.vnc/xstartup Log archivo es /home/cloudsigma/.vnc/your_hostname:1.log |
Su servidor VNC ya está instalado y funcionando correctamente. En el siguiente paso, configuremos el servidor para iniciar Xfce para obtener acceso a través de la interfaz gráfica.
Paso 2— Configurar el servidor VNC
Bajo el directorio home, encontrará la carpeta .vnc que contiene todos los archivos de configuración llamados startup. Inicialmente, encontrará el archivo startup en ejecución, el cual se creó automáticamente cuando ejecutamos el comando vncserver en el Paso-1. El script de inicio se creó al ejecutar el comando vncserver en el paso anterior. Sin embargo, ahora creará el suyo propio para iniciar el escritorio Xfce. También tendremos que crear nuestro propio servidor para iniciar el escritorio Xfce porque la configuración de VNC cambiará.
Antes de continuar, debemos detener la instancia del servidor VNC que se ejecuta en el puerto 5901:
|
1 |
vncserver -kill :1 |
Verá la siguiente salida:
|
1 2 |
Salida Matando Xtightvnc proceso ID 17648 nano ~/.vnc/xstartup |
En lugar de 17648, es posible que obtenga un número diferente y eso está bien. A continuación, modificaremos el archivo xstartup . Antes de realizar cualquier modificación en el archivo, hagamos una copia de seguridad del archivo original:
|
1 |
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak |
A continuación, cree un nuevo archivo xstartup y ábralo en cualquier editor de texto. En este tutorial, estamos usando nano:
|
1 |
nano ~/.vnc/xstartup |
Una vez hecho esto, agregue las siguientes líneas al archivo:
|
1 2 3 |
#!/bin/bash xrdb $HOME/.Xresources startxfce4 & |
Cada vez que inicia o reinicia el servidor VNC, estos comandos se ejecutan automáticamente. La primera línea es el Shebang que informa al sistema sobre la información del intérprete para pasar el archivo ~/.vnc/xstartup para su ejecución. La siguiente línea xrdb $HOME/. Xresources, informa al framework de la interfaz gráfica de usuario (GUI) de VNC que lea el archivo Xresources del usuario del servidor. Finalmente, la última línea le pide al servidor que inicie Xfce. Después de agregar estas líneas, guarde y cierre el archivo.
Necesitamos hacer que el archivo sea ejecutable para que el servidor VNC pueda usar el nuevo archivo de inicio:
|
1 |
chmod +x ~/.vnc/xstartup |
A continuación, reinicie el servidor VNC:
|
1 |
vncserver -localhost |
Ahora tendrá la opción -localhost agregada aquí. El localhost vincula el servidor VNC a la interfaz de bucle de retorno (loopback) de su servidor, lo que permite conexiones únicamente desde servidores instalados. A continuación, estableceremos un túnel SSH entre nuestra máquina local y el servidor. El objetivo es agregar una capa adicional de seguridad alrededor de VNC. ¿Por qué? Porque los usuarios que tendrán acceso serán aquellos que ya tienen acceso SSH al servidor.
Verá la siguiente salida:
|
1 2 3 4 |
Nuevo 'X' escritorio es your_hostname:1 Iniciando aplicaciones especificadas en /home/sammy/.vnc/xstartup Log archivo es /home/cloudsigma/.vnc/your_hostname:1.log |
Una vez configurado, estamos listos para conectarnos al servidor VNC desde nuestra máquina local.
Paso 3— Conectarse de forma segura al escritorio VNC
Al conectarse con el servidor, VNC no utiliza protocolos seguros. Por lo tanto, necesitamos establecer un túnel SSH y pedirle al cliente VNC que realice una conexión utilizando el túnel en lugar de permitirle realizar una conexión directa por su cuenta.
Crearemos una conexión SSH en nuestra computadora local usando el comando ssh que reenvía a la conexión localhost. Utilice el comando en la terminal para crear una conexión SSH:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
Descifremos el código anterior:
-
-L 59000:localhost:5901: El parámetro -L especifica que el puerto dado en la computadora local ( 59000) irá al host y puerto dados en el servidor de destino ( localhost:5901). Eso significa que el puerto 5901 en el servidor de destino se definirá como your_server_ip). El puerto local que especifique es arbitrario. Siempre que el puerto no esté ya vinculado a otro servicio, puede utilizarlo libremente como puerto de reenvío para su túnel.
-
-C: Habilita la compresión, lo que ayuda aún más a minimizar el consumo de recursos y acelerar el rendimiento.
-
-N: Útil para el reenvío de puertos. Esto informa a ssh que no ejecute ningún comando remoto.
-
-l cloudsigma your_server_ip: El -l parámetro le permite especificar el usuario con el que desea iniciar sesión después de conectarse al servidor.
El comando anterior es una forma más segura de establecer una conexión segura que simplemente abrir el firewall de su servidor para permitir conexiones al puerto 5901 desde cualquier lugar. Una vez realizada la conexión, el túnel SSH reenvía el contenido del puerto 5901 de su VNC al puerto 59000 en su máquina local a través del puerto SSH predeterminado; el puerto 22.
También puede utilizar PuTTY para conectarse a su servidor. Abra PuTTY, vaya al lado izquierdo de la terminal de PuTTY y busque la Connection rama para conectarse. Luego, expanda la SSH rama y haga clic en Tunnels. En la Options controlling SSH port forwarding pantalla, introduzca 59000 como el Source Port y localhost:5901 como el Destination:

Mantenga todas las opciones sin cambios, haga clic en Add, y luego en Apply para implementar el túnel. Una vez que se inicie el túnel, use un cliente VNC para conectarse a localhost: 59000. De forma predeterminada, se le pedirá que se autentique con la contraseña que creamos en el Step-1. Una vez que se conecte, verá el escritorio Xfce predeterminado:

Puede acceder y administrar archivos en el directorio de inicio. Además, configure su servidor VNC para que se ejecute como un servicio de systemd.
Paso 4 — Ejecutar VNC como un servicio de Systemd
Configurar el servidor VNC para que se ejecute como un servicio de systemd permite la administración del servidor. Puede iniciar, detener, reiniciar o finalizar el servicio según su conveniencia y necesidades. Cada vez que el servidor se inicia, puede usar los comandos de administración de systemd para verificar si el servidor está ENCENDIDO o APAGADO.
Primero, crearemos un nuevo archivo de unidad para especificar el puerto de pantalla VNC que queremos usar al administrar los servicios. Defina un archivo de unidad:
|
1 |
sudo nano /etc/systemd/system/vncserver@.service |
Encontrará el @ al final del nombre del archivo, lo que le permite pasar un argumento para usar la configuración del servicio.
A continuación, agregue el conjunto de líneas al archivo de unidad. Cambie el nombre de User, Group, WorkingDirectory, y el nombre de usuario en el valor de PIDFILE:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Unit] Description=Iniciar TightVNC servidor en el inicio After=syslog.target network.target [Service] Type=forking User=cloudsigma Group=cloudsigma WorkingDirectory=/home/cloudsigma PIDFile=/home/cloudsigma/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target |
Si el VNC ya se está ejecutando, el ExecStartPre comando lo detendrá. El ExecStart comando inicia VNC y establece la profundidad de color en color de 24 bits con una resolución de 1280×800. Puede editar estas opciones de inicio según sus necesidades. Además, tenga en cuenta que el ExecStart comando incluye nuevamente la -localhost opción. Una vez hecho esto, guarde y cierre el archivo de unidad.
A continuación, introduzca el nuevo archivo de unidad en su sistema:
|
1 |
sudo sudo systemctl daemon-reload |
Active ENCENDIDO el archivo de unidad:
|
1 |
sudo systemctl enable vncserver@1.service |
El 1 que sigue a @ signo significa sobre qué número de pantalla debe aparecer el servicio. En nuestro caso, es el predeterminado :1 como se discutió en Paso-2. Si el VNC aún se está ejecutando, puede detener la instancia actual del servidor VNC usando el kill comando:
|
1 |
vncserver -kill :1 |
Luego, inícielo como iniciaría cualquier otro servicio de systemd:
|
1 |
sudo systemctl start vncserver@1 |
Puede verificar que se inició con este comando:
|
1 |
sudo systemctl status vncserver@1 |
Verá la salida:
|
1 2 3 4 5 6 7 8 |
Salida vncserver@1.servicio - Iniciar TightVNC servidor al inicio Cargado: cargado (/etc/systemd/system/vncserver@.servicio; habilitado; proveedor predeterminado: habilitado) Activo: activo (en ejecución) desde jue 2020-05-07 17:23:50 UTC; 6s atrás Proceso: 39768 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Proceso: 39772 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Principal PID: 39795 (Xtightvnc) ... |
Su servidor VNC ya está listo para usarse cada vez que se inicie su servidor, y puede administrarlo con systemctl comandos como cualquier otro servicio de systemd. Sin embargo, no verá ninguna diferencia en el lado del cliente. Para volver a conectarse, inicie su SSH túnel usando:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
Puede realizar conexiones una vez más utilizando su cliente VNC a localhost:59000 con su servidor.
Conclusión
Al principio, configurar un servidor VNC puede parecer un desafío, especialmente cuando intenta conectarse con una computadora nueva. Una vez que logre una conexión confiable, trabajar con una computadora remota será divertido y emocionante. Con un servidor VNC seguro en funcionamiento en su servidor Ubuntu 20.04, puede administrar fácilmente sus recursos, archivos, software y configuraciones con una interfaz gráfica fácil de usar. El uso excesivo de ancho de banda es quizás una desventaja de usar VNC. Puede superarlo utilizando pantallas de baja resolución y escala de grises para una transferencia más rápida.
¡Feliz computación!
Comentarios
Aún no hay comentarios. Sea el primero.