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.
Para completar este tutorial, necesitará lo siguiente:
sudo
y un firewall.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:
OutputYou 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:
OutputWould 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.
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:
OutputKilling 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:
OutputNew '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.
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.
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í:
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.
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.
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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!