Tutorial

Cómo instalar y configurar VNC en Debian 9

MiscellaneousApplicationsDebian 9

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 administrar archivos, software y ajustes 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.

A través de esta guía, configurará un servidor VNC en un servidor de Debian 9 y se conectará de forma segura a través de un túnel SSH. Usará TightVNC, un paquete de control remoto rápido y ligero. Esta opción garantizará que nuestra conexión VNC sea perfecta y estable, incluso en las conexiones a Internet más lentas.

Requisitos previos

Para completar este tutorial, necesitará lo siguiente:

Paso 1: instalación del entorno de escritorio y el servidor VCN

Por defecto, el servidor Debian 9 no viene con un entorno de escritorio gráfico o un servidor VNC instalado, por lo que comenzaremos instalándolos. Específicamente, instalaremos paquetes para el entorno de escritorio Xfce más reciente y el paquete TightVNC disponible en el repositorio oficial de Debian.

En su servidor, actualice su lista de paquetes:

  • sudo apt update

Ahora, instale el entorno de escritorio Xfce en su servidor:

  • sudo apt install xfce4 xfce4-goodies

Durante la instalación, se le solicitará seleccionar la distribución de su teclado de una lista de posibles opciones. Seleccione la que corresponda para su idioma y presione Enter. La instalación continuará.

Cuando finalice la instalación, instale el servidor TightVNC:

  • sudo apt install tightvncserver

Para completar la configuración inicial del servidor VNC tras su instalación, utilice el comando vncserver para configurar una contraseña segura y crear los archivos de configuración iniciales:

  • vncserver

Se le indicará que introduzca y verifique una contraseña para acceder a su máquina de forma remota:

Output
You will require a password to access your desktops. Password: Verify:

La contraseña debe tener entre seis y ocho caracteres de largo. Las contraseñas de más de 8 caracteres se reducirá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 mouse o teclado. Esta es una opción útil si desea demostrar algo a otras personas que utilizan su servidor VNC, pero no es un requisito necesario.

Luego, el proceso crea los archivos de configuración predeterminados que se requieren y la información de conexión para el servidor:

Output
Would you like to enter a view-only password (y/n)? n xauth: file /home/sammy/.Xauthority does not exist New 'X' desktop is your_hostname:1 Creating default startup script /home/sammy/.vnc/xstartup Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

Ahora, vamos a configurar el servidor VNC.

Paso 2: configuración del servidor VNC

El servidor VNC debe saber qué comandos ejecutar cuando se inicia. Específicamente, VNC debe saber a qué escritorio gráfico deberá conectarse.

Estos comandos se encuentran en un archivo de configuración llamado xstartup en la carpeta .vnc de su directorio principal. La secuencia de comandos de inicio se creó cuando ejecutó vncserver en el paso anterior, pero crearemos una propia para abrir el escritorio Xfce.

Cuando VNC se configura por primera vez, se abre como una instancia del servidor predeterminada en el puerto 5901. Este puerto se llama puerto de visualización, y VNC se refiere a él como :1. VNC puede abrir múltiples instancias en otros puertos de visualización, como :2, :3, y así sucesivamente.

Debido a que vamos a cambiar la configuración del servidor VNC, primero, detenga la instancia del servidor VNC que se está ejecutando en el puerto 5901 con el siguiente comando:

  • vncserver -kill :1

El resultado debería tener este aspecto, pero verá un PID diferente:

Output
Killing Xtightvnc process ID 17648

Antes de modificar el archivo xstartup, realice una copia de seguridad del original:

  • mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Ahora, cree un nuevo archivo xstartup y ábralo en su editor de texto:

  • nano ~/.vnc/xstartup

Los comandos de este archivo se ejecutan automáticamente siempre que inicie o reinicie el servidor VNC. Necesitamos que VNC inicie nuestro entorno de escritorio, si aún no está iniciado. Añada estos comandos al archivo:

~/.vnc/xstartup
#!/bin/bash xrdb $HOME/.Xresources startxfce4 &

El primer comando del archivo, xrdb $HOME/. Xresources, le indica al marco de trabajo de la GUI de VNC que lea el archivo .Xresources del usuario del servidor. El archivo .Xresources es donde un usuario puede realizar cambios a ajustes concretos del escritorio gráfico, como los colores de la terminal, los temas del cursor y la renderización de fuentes. El segundo comando le indica al servidor que inicie Xfce, que es donde encontrará todo el software gráfico que necesita para administrar cómodamente su servidor.

Para garantizar que el servidor VNC pueda usar este nuevo archivo de inicio correctamente, deberá hacerlo ejecutable.

  • sudo chmod +x ~/.vnc/xstartup

Ahora, reinicie el servidor VNC.

  • vncserver

Visualizará un resultado similar al siguiente:

Output
New 'X' desktop is your_hostname:1 Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

Con la configuración establecida, vamos a conectar con el servidor desde nuestra máquina local.

Paso 3: conexión segura del escritorio de VNC

VNC no utiliza protocolos seguros cuando se conecta. Usaremos un túnel SSH para establecer una conexión segura con nuestro servidor y, luego, le indicaremos a nuestro cliente VNC que utilice ese túnel en vez de realizar una conexión directa.

Cree una conexión SSH en su equipo local que se reenvíe de forma segura a la conexión localhost para VNC. Puede hacerlo a través de la terminal en Linux o macOS con el siguiente comando:

  • ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

El conmutador -L especifica las vinculaciones del puerto. En este caso, estamos vinculando el puerto 5901 de la conexión remota con el puerto 5901 de su máquina local. El conmutador -C permite la compresión, mientras que el conmutador -N le indica a ssh que no queremos ejecutar el comando remoto. El conmutador -l especifica el nombre de inicio de sesión remoto.

Recuerde sustituir sammy y your_server_ip por el nombre de usuario sudo no root y la dirección IP de su servidor.

Si usa un cliente SSH gráfico, como PuTTY, recurra a your_server_ip para la conexión IP y establezca localhost:5901 como un nuevo puerto reenviado en los ajustes del túnel SSH del programa.

Una vez que el túnel se esté ejecutando, utilice un cliente VNC para conectar a localhost:5901. Se le pedirá que autentique usando la contraseña que configuró en el Paso 1.

Una vez conectado, verá el escritorio Xfce predeterminado.

La conexión VNC al servidor de Debian 9 Seleccione Use default config para configurar su escritorio de forma rápida.

Puede acceder a los archivos en su directorio principal con el administrador de archivos o desde la línea de comandos, como se indica aquí:

Archivos a través de la conexión VNC con Debian 9

En su máquina local, pulse CTRL+C en su terminal para detener el túnel SSH y regresar a su línea de comandos. Esto también desconectará su sesión de VNC.

A continuación, configuraremos el servidor VNC como servicio.

Paso 4: ejecución de VNC como servicio del sistema

A continuación, configuraremos el servidor VNC como un servicio de systemd para poder iniciarlo, detenerlo y reiniciarlo según lo necesitemos, como cualquier otro servicio. Esto también garantizará que VNC se inicie al reiniciar su servidor.

Primero, cree un nuevo archivo de unidad llamado /etc/systemd/system/vncserver@.service con el editor de texto de su preferencia:

  • sudo nano /etc/systemd/system/vncserver@.service

El símbolo @ al final del nombre nos dejará pasar un argumento que podemos usar en la configuración del servicio. Lo usaremos para especificar el puerto de visualización de VNC que queremos usar cuando administremos el servicio.

Añada las siguientes líneas al archivo. Asegúrese de cambiar el valor de User, Group, WorkingDirectory y el nombre de usuario en el valor de PIDFILE para que coincidan con su nombre de usuario:

/etc/systemd/system/vncserver@.service
[Unit] Description=Start TightVNC server at startup After=syslog.target network.target [Service] Type=forking User=sammy Group=sammy WorkingDirectory=/home/sammy PIDFile=/home/sammy/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target

El comando ExecStartPre detiene VNC si ya se está ejecutando. El comando ExecStart inicia VNC y establece la profundidad del color a color de 24 bits con una resolución de 1280 x 800. También puede modificar estas opciones de inicio según sus necesidades.

Guarde y cierre el archivo.

A continuación, informe al sistema la existencia de un nuevo archivo de unidad.

  • sudo systemctl daemon-reload

Habilite el archivo de unidad.

  • sudo systemctl enable vncserver@1.service

El 1 tras el signo @ indica en qué número de pantalla debe aparecer el servicio, en este caso, el valor predeterminado es :1, como se explicó en el paso 2.

Detenga la instancia actual del servidor VNC si aún se está ejecutando.

  • vncserver -kill :1

Luego, inícielo como iniciaría cualquier otro servicio de systemd.

  • sudo systemctl start vncserver@1

Puede verificar si ha comenzado con este comando:

  • sudo systemctl status vncserver@1

Si se inició correctamente, el resultado debería verse así:

Output
● vncserver@1.service - Start TightVNC server at startup Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2018-09-05 16:47:40 UTC; 3s ago Process: 4977 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Process: 4971 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS) Main PID: 4987 (Xtightvnc) ...

Ahora, su servidor VNC estará disponible cuando reinicie la máquina.

Inicie su túnel SSH de nuevo:

  • ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

Luego, realice una nueva conexión usando el software de su cliente VNC con localhost:5901 para conectarse con su máquina.

Conclusión

Ahora dispondrá de un servidor VNC seguro configurado y activo en su servidor Debian 9. Ya puede administrar sus archivos, software y ajustes con una interfaz gráfica familiar y fácil de usar, y puede ejecutar software gráfico, como navegadores web, de forma remota.

Creative Commons License