En esta entrada veremos cómo instalar VNC en Debian 10 Buster paso a paso, de modo que podrás conectar de forma remota desde otros dispositivos al escritorio de trabajo de tu máquina como si estuvieras sentado frente a ella.
Tabla de contenidos
Antes de instalar VNC en Debian 10 Buster
Si quieres seguir esta guía de instalación de VNC en Debian 10 Buster será necesario partir de la siguiente base:
- Una máquina Debian 10 Buster actualizada.
- Entorno de escritorio (en este tutorial usaremos XFce 4).
- Acceso a consola con un usuario con permisos de sudo.
- Conexión a Internet.
- Otras máquinas en red desde las que poder probar el servicio.
Si sólo dispones de un sistema Debian 10 Buster de consola, puede que te interese consultar previamente nuestra guía de instalación de XFce en Debian 10 Buster.
Cómo instalar VNC en Debian 10 Buster
Vamos a instalar el servidor VNC en Debian 10 Buster desde los repositorios del sistema que, entre otras posibilidades, nos ofrecen TightVNC Server, la opción que hemos elegido para este tutorial.
Empezaremos actualizando la información de los repositorios:
~$ sudo apt update
El paquete que necesitamos es tightvncserver, que instalamos con apt:
~$ sudo apt install -y tightvncserver
Cómo activar el servidor VNC en Debian 10 Buster
A partir de este momento todos los usuarios del sistema dispondrán del comando vncserver para activar el servidor VNC en Debian 10, pero antes de hacerlo crearemos una contraseña de acceso a la conexión mediante el comando vncpasswd:
~$ vncpasswd
Crearemos una contraseña de entre 6 y 8 caracteres de longitud para acceso total y tendremos la posibilidad de crear una segunda contraseña para acceso en modo espectador (sin posibilidad de interacción con el escritorio).
Estas contraseñas se almacenan en el archivo ~/.vnc/passwd, que se creará si no existía.
Si en cualquier momento necesitamos cambiar las contraseñas, lanzaremos de nuevo el comando vncpasswd.
Funcionamiento de TightVNC
El funcionamiento básico del servidor VNC TightVNC consiste en vincular sesiones gráficas (:1, :2, :3, etc.) a puertos TCP, a partir del 5901 (5901, 5902, 5903, etc.).
Para poder trabajar con VNC el usuario no debe tener inciada sesión gráfica en la máquina Debian 10, así que realizaremos los siguientes pasos en modo consola o a través de un terminal remoto SSH.
A la hora de lanzar el servidor podemos hacerlo sin especificar el número de sesión gráfica, de modo que se activará la primera disponible (normalmente la :1):
~$ vncserver New 'X' desktop is debian10:1 Creating default startup script /home/chacho/.vnc/xstartup Starting applications specified in /home/chacho/.vnc/xstartup Log file is /home/chacho/.vnc/debian10:1.log
En la salida del comando se mostrará finalmente cuál es el número de sesión gráfica asignada (dato importante) y el archivo de registro de eventos para la misma.
Además, la primera vez que se lanza vncserver también se creará el archivo ~/.vnc/xstartup, un archivo en el que se pueden realizar ciertos ajustes sobre las características de la sesión gráfica.
Con el comando ss podemos comprobar fácilmente que el servidor VNC ya está esperando conexiones en el puerto TCP correspondiente (en este caso el 5901, que corresponde a la sesión :1):
~$ ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:6001 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 5 0.0.0.0:5901 0.0.0.0:* LISTEN 0 128 [::]:22 [::]:*
Para cerrar el servidor y liberar la sesión gráfica usaremos la opción -kill del comando vncserver indicando el número de sesión. Siguiendo el ejemplo anterior, liberaríamos la sesión :1 con el siguiente comando:
~$ vncserver -kill :1 Killing Xtightvnc process ID 2539
Automáticamente el puerto TCP correspondiente deja de estar a la escucha, cosa que podemos comprobar usando de nuevo el comando ss:
~$ ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 128 [::]:22 [::]:*
Ahora que sabes cómo iniciar y detener el servidor para tu usuario debes tener en cuenta dos cosas:
- Una misma sesión gráfica permitirá la conexión desde uno o varios clientes, ya sea en modo espectador o en modo de control, de forma que en todos los clientes se visualizará el mismo escritorio.
- Un mismo usuario no puede tener activa más de una sesión gráfica, por lo que no es posible tener abierta la sesión gráfica en la terminal física de la máquina Debian 10 y a la vez una sesión VNC, o dos sesiones VNC distintas.
- Sí es posible que distintos usuarios establezcan sus popias sesiones VNC (una para cada uno, con su propio número de sesión y puerto TCP asociado).
Cómo conectar a VNC en Debian 10 Buster desde máquinas remotas
Vamos ahora a probar todo lo que hemos visto, estableciendo conexiones VNC a la máquina Debian 10 desde otra máquina con un cliente.
Si se trata de un entorno doméstico, para pruebas, etc. podremos trabajar con conexiones directas. Pero si la seguridad es un factor a tener en cuenta, debido a que la conexión del protocolo VNC no está cifrada, será más interesante trabajar con conexiones a través de túneles SSH. A continuación exploramos ambas posibilidades.
Conexiones VNC directas
Si tienes activado el firewall UFW de Debian 10 y quieres establecer conexión directa a los puertos de VNC (5901 TCP en adelante) deberás añadir las reglas necesarias.
En el caso de trabajar con un único usuario, usará normalmente el puerto 5901, que será el que abiremos en el firewall:
~$ sudo ufw allow 5901/tcp
Si son varios los usuarios que van a usar simultáneamente VNC entonces es más cómodo abrir un rango de puertos a partir del 5901 TCP, por ejemplo, para 10 conexiones a 10 sesiones gráficas distintas:
~$ sudo ufw allow 5901:5910/tcp
Obviamente nada de esto será necesario si la máquina Debian 10 no tiene activado el firewall.
En la máquina en red desde la que vamos a conectar al servidor VNC abriremos el cliente.
Por ejemplo, desde una máquina Windows que cuente con el cliente TightVNC Viewer, en el campo «Remote Host» indicaremos la dirección (IP, nombre DNS, dominio, etc.) añadiendo el número de sesión gráfica.
La máquina Debian 10 sobre la que hemos realizado este tutorial es accesible en el dominio debian10.local.lan, y tenemos el servidor VNC vinculado a la sesión gráfica :1, por lo que introduciremos debian10.local.lan:1 como valor:
Si todo está bien y se establece la conexión, se nos solicitará la contraseña de acceso:
Introduciremos la contraseña de control total o la de espectador, según corresponda y se abrirá una ventana donde tendremos el escritorio remoto de la máquina Debian 10:
¡Listo!
Conexiones VNC mediante túnel SSH
En este caso, a la hora de establecer conexión con el servidor VNC, primero conectamos mediante SSH a la máquina Debian 10, añadiendo a la conexión un túnel SSH entre un puerto local de la máquina donde se ejecuta el cliente y el puerto de la máquina Debian 10 correspondiente a la sesión VNC que nos interese.
Desde Windows
Para establecer la conexión SSH podemos usar un cliente gráfico como PuTTY, ya que no todas las versiones de Windows incluyen cliente de consola.
En el campo «Host Name» de la categoría «Session» indicaremos la dirección (IP, dominio, nombre DNS, etc.) de la máquina Debian 10:
A continuación desplegaremos la sección «Connection / SSH / Tunnels«, donde en el campo «Source port» indicaremos un puerto TCP libre en la máquina local y en el campo «Destination» indicaremos la dirección y puerto de destino de la máquina Debian 10:
Podríamos indicar cualquier número de puerto en «Source port«, pero para no complicar las cosas, sobre todo si en algún momento añadimos más redirecciones, usaremos el mismo que el puerto destino.
Añadimos la redirección de puertos que acabamos de configurar usando el botón «Add«:
La redirección aparecerá en la lista «Forwarded ports«.
Y ya podríamos establecer la conexión con el botón «Open«, pero si vas a usar frecuentemente la conexión VNC desde esta máquina cliente, recuerda que puedes guardarla volviendo a la categoría «Session«, dándole un nombre en el campo «Saved Sessions» y guardándola con el botón «Save«:
Abrimos la conexión, ahora sí, con el botón «Open«.
Si es la primera vez que conectamos a la máquina Debian 10 nos avisará de que la huella digital recibida es desconocida, puediendo añadirla a la caché de PuTTY.
Inmediatamente se nos solicitarán las credenciales de acceso a la máquina Debian 10 e iniciaremos la sesión:
Si no lo has hecho antes podrías usar esta misma sesión SSH para lanzar el comando vncserver en la máquina Debian 10, si sabes de antemano que el servidor VNC quedará a la escucha en el puerto configurado en el túnel.
Dejamos abierta esta conexión y abrimos el cliente TightVNC Viewer.
Ahora, en «Remote Host» indicaremos la dirección de la máquina local, normalmente localhost ó 127.0.0.1, seguida del puerto local que designamos en el campo «Source» de la redirección de puertos en PuTTY:
Si hemos hecho todo correctamente, se nos solicitará la contraseña y tras introducirla se abrirá la ventana con el escritorio remoto de Debian 10:
¡Justo lo que queríamos!
Desde Linux
Abrimos una terminal de consola y lanzamos el comando ssh con las siguientes opciones:
$ ssh -L 5901:localhost:5901 -C -l chacho debian10.local.lan
- El parámetro -L indica el puerto que se abrirá en la máquina local y la dirección y puerto de la máquina destino. En este ejemplo hemos elegido el mismo número de puerto local, 5901, que el de la máquina Debian 10, aunque nada impediría usar cualquier otro que estuviera libre.
- Con -C activamos la compresión en la comunicación SSH.
- Con -l indicamos el usuario con el que queremos conectar en la máquina Debian 10 (no sería necesario indicarlo si tiene el mismo nombre que en la máquina cliente).
- Finalmente especificamos la dirección IP, dominio, nombre DNS, etc. de la máquina Debian 10 en la que corre el servidor VNC.
Si es la primera vez que conectamos se nos avisará de que la huella digital enviada desde la máquina Debian 10 no es conocida, así que podremos añadirla a la lista de máquinas conocidas si aceptamos la conexión.
Se nos pedirá la contraseña de usuario en Debian 10 y la conexión SSH con el túnel para VNC quedará establecida:
Esta conexión debemos dejarla abierta mientras dure la sesión VNC.
Ahora podemos abrir nuestro cliente VNC favorito, por ejemplo xtightvncviewer:
Este cliente directamente muestra un diálogo en el que debemos introducir la dirección de la máquina local (localhost ó 127.0.0.1), seguida del puerto de conexión local.
Si todo está bien un diálogo similar nos solicitará la contraseña, tras lo cual se abrirá la ventana con el escritorio remoto de la máquina Debian 10:
¡Más fácil imposible!
Conclusión
Ahora que sabes cómo instalar VNC en Debian 10 Buster ya puedes establecer conexiones remotas desde otros sistemas de escritorio, ya sean Linux, Windows u otros, y trabajar con aplicaciones gráficas desde red como si estuvieras ante la máquina física.
En caso de que ya puedas conectar con tu máquina Debian 10 a través de VNC gracias a esta guía y quieras agradecérnoslo, puedes ayudarnos a mantener este sitio y a crear más tutoriales y guías dejando una propina de 1 $ desde PayPal:
O, si te sientes especialmente generoso, invitándonos a un café:
¡Gracias!