VNC o Virtual Network Computing es un sistema de conexión que le permite utilizar su teclado y su ratón para interactuar con un entorno de escritorio gráfico en un servidor remoto. Facilita la gestión de archivos, software y configuración en un servidor remoto para usuarios que aún no están cómodos con la línea de comandos.
En esta guía, vamos a configurar VNC en un servidor Ubuntu 16.04 y conectarse a él de forma segura a través de un túnel SSH. El servidor VNC que vamos a utilizar es TightVNC, un paquete de control remoto rápido y ligero. Esta opción garantizará que nuestra conexión VNC será suave y estable incluso en conexiones de Internet más lentas.
Para completar este tutorial, necesitará:
Un Droplet Ubuntu 16.04 configurado a través del tutorial de configuración inicial del servidor Ubuntu 16.04, que incluye tener un usuario sudo no root
Un equipo local con un cliente VNC instalado que admita conexiones VNC a través de túneles SSH. Si está utilizando Windows, puede usar TightVNC, RealVNC o UltraVNC. Los usuarios de Mac OS X pueden usar el programa de Compartir Pantalla integrado o pueden usar una aplicación multiplataforma como RealVNC. Los usuarios de Linux pueden tener muchas opciones: vinagre
, krdc
, RealVNC, TightVNC y más.
De forma predeterminada, un Droplet Ubuntu 16.04 no viene con un entorno gráfico de escritorio o un servidor VNC instalado, por lo que comenzaremos por instalarlos. En concreto, instalaremos paquetes para el último entorno de escritorio Xfce y el paquete TightVNC disponible en el repositorio oficial de Ubuntu.
En su servidor, instale los paquetes Xfce y TightVNC.
- sudo apt install xfce4 xfce4-goodies tightvncserver
Para completar la configuración inicial del servidor VNC después de la instalación, utilice el comando vncserver
para configurar una contraseña segura.
- vncserver
Se le promocionará para que ingrese y verifique una contraseña y también una contraseña de sólo vista. Los usuarios que inicien sesión con la contraseña de sólo vista no podrán controlar la instancia de VNC con su ratón o teclado. Esta es una opción útil si desea demostrar algo a otras personas usando su servidor VNC, pero no es necesario.
Ejecutar vncserver
completa la instalación de VNC creando archivos de configuración predeterminados e información de conexión para que nuestro servidor pueda usar. Con estos paquetes instalados, ya está listo para configurar su servidor VNC.
En primer lugar, tenemos que decirle a nuestro servidor VNC qué comandos ejecutar cuando se inicia. Estos comandos se encuentran en un archivo de configuración denominado xstartup
en la carpeta .vnc
de su directorio personal. El script de inicio se creó al ejecutar el vncserver
en el paso anterior, pero necesitamos modificar algunos de los comandos para el escritorio de Xfce.
Cuando VNC se configura por primera vez, inicia una instancia de servidor predeterminada en el puerto 5901. Este puerto se denomina puerto de visualización y VNC lo denomina :1
. VNC puede iniciar varias instancias en otros puertos de visualización, como :2
, :3
, etc. Al trabajar con servidores VNC, recuerde que :X
es un puerto de visualización que se refiere a 5900+X
.
Debido a que vamos a cambiar la configuración del servidor VNC, primero deberemos detener la instancia del servidor VNC que se está ejecutando en el puerto 5901.
- vncserver -kill: 1
La salida debería verse algo así, con un PID diferente:
OutputKilling Xtightvnc process ID 17648
Antes de comenzar a configurar el nuevo archivo xstartup
, vamos a hacer una copia de seguridad del original.
- mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Ahora crea un nuevo archivo xstartup
con nano
o tu editor de texto favorito.
- nano ~/.vnc/xstartup
Pegue estos comandos en el archivo para que se realicen automáticamente cada vez que inicie o reinicie el servidor VNC, luego guarde y cierre el archivo.
~/.vnc/xstartup#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
El primer comando en el archivo, xrdb $HOME/.Xresources
, le dice al framework de la GUI de VNC que lea el archivo .Xresources
del usuario del servidor. .Xresources
es donde un usuario puede realizar cambios en determinadas configuraciones del escritorio gráfico, como colores de terminales, temas de cursor y representación de fuentes. El segundo comando simplemente le dice al servidor que inicie Xfce, que es donde encontrará todo el software gráfico que necesita para administrar cómodamente su servidor.
Para asegurarse de que el servidor VNC pueda utilizar este nuevo archivo de inicio correctamente, tendremos que concederle privilegios ejecutables.
- sudo chmod +x ~/.vnc/xstartup
Ahora, reinicie el servidor VNC.
- vncserver
El servidor se debe iniciar con una salida similar a esto:
OutputNew 'X' desktop is your_server_name.com:1
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/liniverse.com:1.log
En este paso, probaremos la conectividad de su servidor VNC.
Primero, necesitamos crear una conexión SSH en su computadora local que se envíe de forma segura a la conexión localhost
para VNC. Puede hacerlo a través de la terminal en Linux u OS X con el siguiente comando. Recuerde reemplazar user
y server_ip_address
con el nombre de usuario sudo no root y la dirección IP de su servidor.
- ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address
Si está utilizando un cliente SSH gráfico, como PuTTY, use server_ip_address
como IP de conexión y establezca localhost: 5901
como un nuevo puerto reenviado en la configuración del túnel SSH del programa.
A continuación, ahora puede utilizar un cliente VNC para intentar una conexión al servidor VNC en localhost: 5901
. Se le pedirá que se autentique. La contraseña correcta para usar es la que estableció en el paso 1.
Una vez conectado, debe ver el escritorio de Xfce predeterminado. Debe ser algo como esto:
Puede acceder a los archivos en su directorio personal con el administrador de archivos o desde la línea de comandos, como se ve aquí:
A continuación, configuraremos el servidor VNC como un servicio systemd. Esto hará posible iniciarlo, detenerlo y reiniciarlo según sea necesario, como cualquier otro servicio systemd.
Primero, cree un nuevo archivo de unidad llamado /etc/systemd/system/vncserver@.service
usando su editor de texto favorito:
- sudo nano /etc/systemd/system/vncserver@.service
Copie y pegue lo siguiente en él. Asegúrese de cambiar el valor de User y el nombre de usuario en el valor de PIDFILE para que coincida 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
PAMName=login
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
Guarde y cierre el archivo.
A continuación, haga que el sistema sea consciente del nuevo archivo de unidad.
- sudo systemctl daemon-reload
Habilite el archivo de la unidad.
- sudo systemctl enable vncserver@1.service
Detenga la instancia actual del servidor VNC si todavía está en ejecución.
- vncserver -kill :1
A continuación, inícielo como iniciar cualquier otro servicio systemd.
- sudo systemctl start vncserver@1
Puede verificar que se inició con este comando:
- sudo systemctl status vncserver@1
Si se inició correctamente, la salida debería tener este aspecto:
vncserver@1.service - TightVNC server on Ubuntu 16.04
Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2016-04-25 03:21:34 EDT; 6s ago
Process: 2924 ExecStop=/usr/bin/vncserver -kill :%i (code=exited, status=0/SUCCESS)
...
systemd[1]: Starting TightVNC server on Ubuntu 16.04...
systemd[2938]: pam_unix(login:session): session opened for user finid by (uid=0)
systemd[2949]: pam_unix(login:session): session opened for user finid by (uid=0)
systemd[1]: Started TightVNC server on Ubuntu 16.04.
Ahora debe tener instalado un servidor VNC asegurado en su servidor Ubuntu 16.04. Ahora podrá administrar sus archivos, software y configuraciones con una interfaz gráfica fácil de usar y familiar.
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!
En paso 3: lo recomendable prueben con VNC client no por SSH normalmente seria: IP-server:1
Funciona bien, pero hay un detalle en paso 4, cuando creas
sudo nano /etc/systemd/system/vncserver@.service
es confuso el contenido inicia con :/etc/systemd/system/vncserver@.service
yo lo había pegado con todo ello y no me funcionaba, deben quitarlo ósea el servicio seria asi:to stop the CNC service it must be like this:
vncserver -kill :1
, in the tutorial you put it with space, so:vncserver -kill: 1
Hola,
no me funciona, tengo un problema en el paso de activar el vncserver, se me desconecta la conexión SSH y cuando quiero conectarme desde un dispositivo no me deja acceder, me sale que el puerto 22 es un recurso no disponible.
Por otro lado tampoco me deja hacer esto mientras que si pude hacerlo una vez, entiendo que esto sirve para preparar el tunel:
ssh -L 5901:127.0.0.1:5901 -N -f -l USER IP_SERVER
Y la conexión por VNCviewer tampoco va, por lo que yo entiendo hay dos problemas, por un lado la conexión SSH que se me cuelga y por otro lado el problema de la conexión VNC que no funciona.
Saludos
Tutorial muy bien explicado y correctísimo. Me funcionaba todo bien hasta que un día reinicié mi vps y ya nunca más me funcionó vnc. Instalé otra vez el servidorvnc siguiendo todos los pasos, pero nada ahora tengo una bonita pantalla gris cada vez que entro al vps por vnc y no hay manera de arreglarlo ya no sé qué mirar. Si alguien por aquí tiene alguna solución a la pantalla gris de los vnc que comente.