Tutorial

Cómo instalar y configurar VNC en Ubuntu 18.04

Published on December 5, 2019
Español
Cómo instalar y configurar VNC en Ubuntu 18.04

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.

En esta guía, configurará un servidor VNC en un servidor Ubuntu 18.04 y se conectará a él 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 Ubuntu 18.04 no viene con un entorno de escritorio gráfico o un servidor VNC instalado, por lo que empezaremos por instalarlos. Específicamente, instalaremos paquetes para el entorno de escritorio Xfce más reciente y el paquete TightVNC disponible en el repositorio oficial de Ubuntu.

En su servidor, actualice su lista de paquetes:

  1. sudo apt update

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

  1. sudo apt install xfce4 xfce4-goodies

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

  1. 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:

  1. 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:

  1. 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:

  1. mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

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

  1. 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.

  1. sudo chmod +x ~/.vnc/xstartup

Ahora, reinicie el servidor VNC.

  1. 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:

  1. 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_ipcon el nombre de usuario sudo no root y la dirección IP de su servidor.

Si está usando un cliente SSH gráfico, como PuTTY, utilice 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. Debería tener un aspecto similar a esto:

Conexión de VNC al servidor Ubuntu 18.04

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 de VNC a Ubuntu 18.04

Pulse CTRL+C en su terminal para detener el túnel SSH y regresar a su instrucción. Esto también desconectará su sesión de VNC.

A continuación, vamos a configurar nuestro 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:

  1. 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.

  1. sudo systemctl daemon-reload

Habilite el archivo de unidad.

  1. 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.

  1. vncserver -kill :1

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

  1. sudo systemctl start vncserver@1

Puede verificar si ha comenzado con este comando:

  1. 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; indirect; vendor preset: enabled) Active: active (running) since Mon 2018-07-09 18:13:53 UTC; 2min 14s ago Process: 22322 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Process: 22316 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS) Main PID: 22330 (Xtightvnc) ...

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

Inicie su túnel SSH de nuevo:

  1. 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, tiene un servidor VNC seguro funcionando en su servidor Ubuntu 18.04. 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.

Learn more about us


About the authors

Default avatar
finid

author


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
3 Comments


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!

how can I add more users to use the vncservice?

Saludos, he seguido las instrucciones al pie de la letra y ha funcionado en Ubuntu Server 20.04 LTS, eso si, he tenido un incoveniente, las ventanas no cuentan con los botones de Cerrar, Maximinar, Minimizar, tampoco se pueden redimensionar, he leído en foros, que este es un error que suele ocurrir y con updates mas adelante se solucionan, otros comentan que Windows Manganer es quien administra el diseño de las ventanas, he revisado esta parte del panel, pero todo esta correctamente configurado, de ser posible, si conoceis alguna solulción a este incoveniente, os agradecería. Caso contrario estare atento a alguna actualización del paquete.

Atte. Juan Carlos Ulloa V.

Buenas tardes, como puedo ejecutar el paso “Si está usando un cliente SSH gráfico, como PuTTY, utilice 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.” sé utilizar ssh con putty y sé que local host es 127.0.0.1:5901, la verdad no se si está mal traducido agradezco su respuesta pronta, gracias.

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel