Esta guía cubre los pasos necesarios para instalar y configurar un servidor VNC en Ubuntu 18.04. También le mostraremos cómo conectarse de forma segura al servidor VNC a través de un túnel SSH.
Virtual Network Computing (VNC) es un sistema de uso compartido de escritorio gráfico que le permite usar su teclado y mouse para controlar de forma remota otra computadora. Es una alternativa de código abierto al protocolo de escritorio remoto (RDP) de Microsoft.
Requisitos previos #
Antes de continuar con el tutorial, asegúrese de haber iniciado sesión como usuario con privilegios de sudo.
Instalación del entorno de escritorio #
La mayoría de los servidores no tienen instalado un entorno de escritorio, por lo que comenzaremos instalando un entorno de escritorio ligero.
Hay varios entornos de escritorio (DE) disponibles en los repositorios de Ubuntu. Instalaremos Xfce. Es un entorno de escritorio rápido, estable y liviano, lo que lo hace ideal para usar en un servidor remoto.
Ingrese los siguientes comandos para instalar Xfce en su servidor:
sudo apt update
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
Dependiendo de su sistema, la descarga e instalación de los paquetes de Xfce puede llevar algún tiempo.
Instalando el Servidor VNC #
También hay varios servidores VNC diferentes disponibles en los repositorios de Ubuntu, como TightVNC, TigerVNC y x11vnc. Cada servidor VNC tiene diferentes fortalezas y debilidades en términos de velocidad y seguridad.
Instalaremos TigerVNC. Es un servidor VNC de alto rendimiento mantenido activamente.
Escriba el siguiente comando para instalar TigerVNC en su servidor Ubuntu:
sudo apt install tigervnc-standalone-server tigervnc-common
Ahora que el servidor VNC está instalado, el siguiente paso es crear la configuración inicial y configurar la contraseña. No use sudo cuando ejecute vncserver
comando:
vncserver
Se le pedirá que ingrese y confirme la contraseña y si desea configurarla como una contraseña de solo lectura. Si elige configurar una contraseña de solo lectura, el usuario no podrá interactuar con la instancia de VNC con el mouse y el teclado.
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth: file /home/linuxize/.Xauthority does not exist
New 'server2.linuxize.com:1 (linuxize)' desktop at :1 on machine server2.linuxize.com
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/linuxize/.vnc/server2.linuxize.com:1.log
Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/linuxize/.vnc/passwd :1 to connect to the VNC server.
La primera vez que vncserver
se ejecuta el comando, crea y almacena el archivo de contraseña en ~/.vnc
. Este directorio se creará si no está presente.
Tenga en cuenta el :1
después del nombre de host en la salida anterior. Esto indica el número de puerto de visualización en el que se ejecuta el servidor vnc. En nuestro caso, el servidor se ejecuta en el puerto TCP 5901
(5900+1). Si crea una segunda instancia con vncserver
se ejecutará en el próximo puerto libre, es decir, :2
, lo que significa que el servidor se ejecuta en el puerto 5902
(5900+2).
Lo que es importante recordar es que cuando se trabaja con servidores VNC, :X
es un puerto de pantalla que se refiere a 5900+X
.
Antes de continuar con el siguiente paso, detenga la instancia de VNC utilizando el vncserver
comando con -kill
opción y el número de servidor como argumento. En este ejemplo, el servidor se ejecuta en el puerto 5901 (:1
), así que lo detendremos con:
vncserver -kill :1
Killing Xtigervnc process ID 7264... success!
Configuración del servidor VNC #
Ahora que Xfce y TigerVNC están instalados en el servidor, necesitamos configurar TigerVNC para usar Xfce. Para hacerlo, cree el siguiente archivo:
~/.vnc/xstartupnano ~/.vnc/xstartup
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
Guarde y cierre el archivo. Los comandos anteriores se ejecutarán automáticamente cada vez que inicie o reinicie el servidor TigerVNC.
El ~/.vnc/xstartup
El archivo también necesita tener permisos de ejecución. Ejecute el siguiente chmod
comando para asegurarse de que los permisos son correctos:
chmod u+x ~/.vnc/xstartup
Si necesita pasar opciones adicionales al servidor VNC, cree un archivo llamado config
y agregue una opción por línea. Aquí hay un ejemplo:
geometry=1920x1080
dpi=96
Creación de un archivo de unidad Systemd #
Cree un archivo de unidad systemd para que pueda iniciar, detener y reiniciar el servicio VNC según sea necesario, al igual que cualquier otro servicio systemd.
Abra su editor de texto y copie y pegue la siguiente configuración en él. Asegúrese de cambiar el nombre de usuario en la línea 7 para que coincida con su nombre de usuario.
sudo nano /etc/systemd/system/[email protected]
/etc/systemd/system/[email protected][Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=simple
User=linuxize
PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Guarde y cierre el archivo.
Notifique a systemd que creamos un nuevo archivo de unidad con:
sudo systemctl daemon-reload
El siguiente paso es habilitar el archivo de la unidad con el siguiente comando:
sudo systemctl enable [email protected]
El número 1
después de @
El signo define el puerto de visualización en el que se ejecutará el servicio VNC. Esto significa que el servidor VNC escuchará en el puerto 5901
, como comentamos en la sección anterior.
Inicie el servicio VNC ejecutando:
sudo systemctl start [email protected]
Verifique que el servicio se haya iniciado correctamente con:
sudo systemctl status [email protected]
● [email protected] - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/[email protected]; indirect; vendor preset: enabled)
Active: active (running) since Thu 2018-08-16 19:05:54 UTC; 4s ago
Process: 9893 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Main PID: 9900 (vncserver)
Tasks: 0 (limit: 507)
CGroup: /system.slice/system-vncserver.slice/[email protected]
‣ 9900 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg
Conectando al servidor VNC #
VNC no es un protocolo encriptado y puede estar sujeto a la detección de paquetes. El enfoque recomendado es crear un túnel SSH que reenviará de forma segura el tráfico desde su máquina local en el puerto 5901 al servidor en el mismo puerto.
Configurar SSH Tunneling en Linux y macOS #
Si ejecuta Linux, macOS o cualquier otro sistema operativo basado en Unix en su máquina, puede crear fácilmente un túnel SSH con el siguiente comando:
ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address
Se le pedirá que ingrese la contraseña de usuario.
No olvide reemplazar username
y server_ip_address
con tu nombre de usuario y la dirección IP de tu servidor.
Configurar túneles SSH en Windows #
Si ejecuta Windows, puede configurar SSH Tunneling usando el cliente PuTTY SSH.
Abra Putty e ingrese la dirección IP de su servidor en Host name or IP address
campo.
Bajo la Connection
menú, cuadro, expandir SSH
y seleccione Tunnels
. Introduzca el puerto del servidor VNC (5901
) en el Source Port
e ingrese server_ip_address:5901
en el Destination
y haz clic en Add
como se muestra en la siguiente imagen:
Volver a la Session
para guardar la configuración y no tener que introducirla cada vez. Para el servidor remoto, seleccione la sesión guardada y haga clic en Open
botón.
Conectando usando Vncviewer #
Ahora que se creó el túnel SSH, es hora de abrir su Vncviewer y conectarse al servidor VNC en localhost:5901
.
Puede usar cualquier visor VNC como TigerVNC, TightVNC, RealVNC, UltraVNC, Vinagre y VNC Viewer para Google Chrome.
Usaremos TigerVNC. Abra el visor, ingrese localhost:5901
y haga clic en Connect
botón.
Ingrese su contraseña de usuario cuando se le solicite, y debería ver el escritorio Xfce predeterminado. Se verá algo como esto:
Puede comenzar a interactuar con el escritorio XFCE remoto desde su máquina local usando su teclado y mouse.