Manager, Developer Education
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.
En esta guía de inicio rápido, configurará un servidor VNC con TightVNC en un servidor de Ubuntu 20.04 y se conectará con él de manera segura a través de un túnel SSH. Luego, usará un programa cliente VNC en su equipo local para interactuar con el servidor a través de un entorno de escritorio gráfico.
Para completar este tutorial, necesitará lo siguiente:
Después de conectarse a su servidor con SSH, actualice su lista de paquetes:
- sudo apt update
A continuación, instale Xfce y el paquete xfce4-goodies
, que contiene algunas mejoras para el entorno de escritorio:
- sudo apt install xfce4 xfce4-goodies
Cuando finalice la instalación, instale el servidor TightVNC:
- sudo apt install tightvncserver
Luego, ejecute el comando vncpasswd
para establecer una contraseña de acceso a VNC y crear los archivos de configuración iniciales:
- vncpasswd
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; las contraseñas que contengan más de 8 caracteres se reducirán automáticamente. Una vez que haya verificado la contraseña, tendrá la opción de crear una contraseña de solo lectura, pero no es requisito necesario.
Si en algún momento quiere cambiar su contraseña o agregar una contraseña de solo lectura, vuelva a ejecutar el comando vncpasswd
.
Los comandos que ejecuta el servidor de VNC durante el inicio están ubicados en un archivo de configuración denominado xstartup
en la carpeta .vnc
, en el directorio de inicio. En este paso, crearemos una secuencia de comandos de xstartup
personalizada que le indicará al servidor de VNC que se conecte con el escritorio Xfce.
Cree un nuevo archivo xstartup
y ábralo en un editor de texto, como nano
:
- nano ~/.vnc/xstartup
Agregue las siguientes líneas al nuevo archivo:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
Después de shebang, el primer comando en el archivo, xrdb $HOME/. Xresources
, le indica al marco de trabajo de la GUI de VNC que lea el archivo. Xresources
. El segundo comando le indica al servidor que inicie Xfce.
Guarde y cierre el archivo después de añadir estas líneas. Si utiliza nano
, podrá hacerlo presionando CTRL+X
, Y
y luego ENTER
.
Luego, haga que el archivo sea ejecutable:
- chmod +x ~/.vnc/xstartup
Ahora, inicie el servidor de VNC con el comando vncserver
:
- vncserver -localhost
Este comando incluye la opción -localhost
, que vincula el servidor de VNC a la interfaz de bucle invertido de su servidor. Esto hará que VNC solo permita las conexiones que provienen del servidor en el que está instalado.
Verá un resultado similar a este:
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
Aquí, puede observar que el comando 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
:
Para establecer una conexión segura con el servidor, establecerá un túnel SSH y, luego, le indicará al cliente VNC que se conecte a través de ese túnel en lugar de crear 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
:
- ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip
Aunque en este ejemplo usamos 59000
, el puerto local puede ser cualquier puerto que aún no esté bloqueado por otro programa o proceso. También, asegúrese de cambiar sammy
por su nombre de usuario en Ubuntu y your_server_ip
por la dirección IP de su servidor.
Si está utilizando PuTTY para conectarse a su servidor, puede crear un túnel SSH haciendo clic con el botón secundario en la barra superior de la ventana de la terminal y, luego, en la opción Cambiar la configuración…:
Busque la rama Conexión en el menú con estructura de árbol ubicado en la parte izquierda de la ventana de reconfiguración de PuTTY. Despliegue la rama SSH y haga clic en Túneles. En la pantalla Opciones de control del puerto de enrutamiento SSH, ingrese 59000
como el puerto fuente y localhost:5901
como el destino, tal como se muestra en la imagen:
Luego, haga clic en el botón Agregar y, a continuación, en el botón Aplicar para implementar el túnel.
Una vez que el túnel se esté ejecutando, utilice un cliente VNC para conectar a localhost:59000
. Se le pedirá que autentique usando la contraseña que configuró en el Paso 1.
Una vez conectado, verá el escritorio Xfce predeterminado. Debería tener un aspecto similar a este:
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í:
Pulse CTRL+C
en su terminal para detener el túnel SSH y regresar a su solicitud. Esto también desconectará su sesión de VNC.
Al configurar el servidor de VNC para que se ejecute como un servicio de systemd, puede utilizar los comandos de administración de systemd iniciar, detener y reiniciar el servidor, como así también habilitarlo para que comience a ejecutarse cada vez que el servidor arranque.
Primero, cree un nuevo archivo de unidad systemd que llamaremos /etc/systemd/system/vncserver@.service
:
- sudo nano /etc/systemd/system/vncserver@.service
El símbolo @
al final del nombre nos dejará pasar un argumento que puede utilizar en la configuración del servicio. Lo utilizará para especificar el puerto de visualización de VNC que quiere utilizar cuando administre el servicio.
Agregue las siguientes líneas al archivo, asegurándose de reemplazar los valores de User, Group, WorkingDirectory y del nombre de usuario en el valor de PIDFILE por su nombre de usuario:
[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 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Guarde y cierre el archivo.
A continuación, informe al sistema de 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 de VNC si aún se está ejecutando:
- vncserver -kill :1
Luego, inícielo tal 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
Para obtener más información sobre systemctl, consulte el tutorial Cómo utilizar Systemctl para administrar los servicios y las unidades de Systemd
.
Para volver a conectarse, inicie su túnel SSH de nuevo:
- ssh -L 59000:127.0.0.1:5901 -C -N -l sammy your_server_ip
Luego, realice una nueva conexión utilizando el software de su cliente VNC con localhost:59000
para conectarse con su servidor.
Ahora, tiene un servidor de VNC seguro ejecutándose en su servidor Ubuntu 20.04. Ahora podrá administrar sus archivos, software y ajustes con una interfaz gráfica fácil de usar, y podrá 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!