Cómo instalar y configurar VNC en Ubuntu 18.04

Introducción
Virtual Network Computing , o VNC, es un sistema de conexión que permite utilizar el teclado y el ratón para interactuar con un entorno de escritorio gráfico en un servidor remoto. Facilita la gestión de archivos, software y configuraciones en un servidor remoto a los usuarios que aún no se sienten cómodos con la línea de comandos.
En esta guía, configurarás un servidor VNC en un servidor Ubuntu 18.04 y te conectarás a él de forma segura a través de un túnel SSH. Utilizarás TightVNC , un paquete de control remoto rápido y liviano. Esta opción garantizará que nuestra conexión VNC sea fluida y estable incluso en conexiones a Internet más lentas.
Prerrequisitos
Para completar este tutorial, necesitarás:
- Un servidor Ubuntu 18.04 configurado siguiendo la guía de configuración inicial del servidor Ubuntu 18.04 , incluido un usuario sudo no root y un firewall.
- Una computadora local con un cliente VNC instalado que admita conexiones VNC a través de túneles SSH.
- En Windows, puedes usar TightVNC , RealVNC o UltraVNC .
- En macOS, puedes usar el programa de uso compartido de pantalla integrado o puedes usar una aplicación multiplataforma como RealVNC .
- En Linux, puede elegir entre muchas opciones, incluidas
vinagre
,krdc
, RealVNC o TightVNC .
Paso 1: Instalación del entorno de escritorio y del servidor VNC
De manera predeterminada, un servidor Ubuntu 18.04 no viene con un entorno de escritorio gráfico ni un servidor VNC instalado, por lo que comenzaremos por instalarlos. En concreto, 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:
- sudo apt update
Ahora instale el entorno de escritorio Xfce en su servidor:
- sudo apt install xfce4 xfce4-goodies
Una vez completada la instalación, instale el servidor TightVNC:
- sudo apt install tightvncserver
Para completar la configuración inicial del servidor VNC después de la instalación, utilice el vncserver
comando para configurar una contraseña segura y crear los archivos de configuración inicial:
- vncserver
Se le pedirá que ingrese 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 con más de ocho caracteres se truncarán automáticamente.
Una vez que verifique la contraseña, tendrá la opción de crear una contraseña de solo lectura. Los usuarios que inicien sesión con la contraseña de solo lectura no podrán controlar la instancia de VNC con el mouse o el teclado. Esta es una opción útil si desea demostrar algo a otras personas que usan su servidor VNC, pero no es obligatoria.
Luego, el proceso crea los archivos de configuración predeterminados necesarios y la información de conexión para el servidor:
OutputWould you like to enter a view-only password (y/n)? nxauth: file /home/sammy/.Xauthority does not existNew 'X' desktop is your_hostname:1Creating default startup script /home/sammy/.vnc/xstartupStarting applications specified in /home/sammy/.vnc/xstartupLog 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 necesita saber qué comandos ejecutar al iniciarse. En concreto, VNC necesita saber a qué escritorio gráfico debe conectarse.
Estos comandos se encuentran en un archivo de configuración llamado xstartup
en la .vnc
carpeta que se encuentra debajo de su directorio de inicio. El script de inicio se creó cuando ejecutó el comando vncserver
en el paso anterior, pero crearemos el nuestro para iniciar el escritorio Xfce.
Cuando se configura VNC por primera vez, se inicia una instancia de servidor predeterminada en el puerto 5901
. Este puerto se denomina puerto de pantalla y VNC lo denomina :1
. VNC puede iniciar varias instancias en otros puertos de pantalla, como :2
, :3
, etc.
Dado que vamos a cambiar la forma en que se configura el servidor VNC, primero detenga la instancia del servidor VNC que se ejecuta en el puerto 5901
con el siguiente comando:
- vncserver -kill :1
La salida debería verse así, aunque verás un PID diferente:
OutputKilling Xtightvnc process ID 17648
Antes de modificar el xstartup
archivo, haga una copia de seguridad del original:
- mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Ahora crea un nuevo xstartup
archivo y ábrelo en tu editor de texto:
- nano ~/.vnc/xstartup
Los comandos de este archivo se ejecutan automáticamente cada vez que se inicia o reinicia el servidor VNC. Necesitamos que VNC inicie nuestro entorno de escritorio si aún no lo ha hecho. Agregue estos comandos al archivo:
~/.vnc/xstartup
#!/bin/bashxrdb $HOME/.Xresourcesstartxfce4
El primer comando del archivo, xrdb $HOME/.Xresources
, le indica al marco de la interfaz gráfica de usuario de VNC que lea el .Xresources
archivo del usuario del servidor. .Xresources
es donde un usuario puede realizar cambios en ciertas configuraciones del escritorio gráfico, como colores de la terminal, temas del cursor y representació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.
Guarde y cierre el archivo.
Para garantizar que el servidor VNC pueda usar este nuevo archivo de inicio correctamente, necesitaremos hacerlo ejecutable.
- sudo chmod +x ~/.vnc/xstartup
Ahora, reinicie el servidor VNC.
- vncserver
Verás un resultado similar a este:
OutputNew 'X' desktop is your_hostname:1Starting applications specified in /home/sammy/.vnc/xstartupLog file is /home/sammy/.vnc/your_hostname:1.log
Con la configuración establecida, conectémonos al servidor desde nuestra máquina local.
Paso 3: Conexión segura del escritorio VNC
VNC no utiliza protocolos seguros al conectarse. Usaremos un túnel SSH para conectarnos de forma segura a nuestro servidor y luego le indicaremos a nuestro cliente VNC que use ese túnel en lugar de realizar una conexión directa.
Cree una conexión SSH en su computadora local que reenvíe de forma segura a la localhost
conexión 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 -L
conmutador especifica las vinculaciones de puertos. En este caso, vinculamos el puerto 5901
de la conexión remota al puerto 5901
de su máquina local. El -C
conmutador habilita la compresión, mientras que el -N
conmutador indica ssh
que no queremos ejecutar un comando remoto. El -l
conmutador especifica el nombre de inicio de sesión remoto.
Recuerde reemplazar sammy
y your_server_ip
con el nombre de usuario sudo no root y la dirección IP de su servidor.
Si está utilizando un cliente SSH gráfico, como PuTTY, utilícelo your_server_ip
como IP de conexión y configúrelo localhost:5901
como un nuevo puerto reenviado en la configuración del túnel SSH del programa.
Una vez que el túnel esté en funcionamiento, use un cliente VNC para conectarse a localhost:5901
. Se le solicitará que se autentique con la contraseña que estableció en el paso 1.
Una vez que estés conectado, verás el escritorio Xfce predeterminado. Debería verse así:
Puede acceder a los archivos de su directorio de inicio con el administrador de archivos o desde la línea de comandos, como se ve aquí:
Pulsa CTRL+C
en tu terminal para detener el túnel SSH y volver al mensaje de aviso. Esto también desconectará tu sesión VNC.
A continuación, configuremos nuestro servidor VNC como un servicio.
Paso 4: Ejecutar VNC como un servicio del sistema
A continuación, configuraremos el servidor VNC como un servicio systemd para que podamos iniciarlo, detenerlo y reiniciarlo según sea necesario, como cualquier otro servicio. Esto también garantizará que VNC se inicie cuando se reinicie el servidor.
Primero, crea un nuevo archivo de unidad llamado /etc/systemd/system/vncserver@.service
usando tu editor de texto favorito:
- sudo nano /etc/systemd/system/vncserver@.service
El @
símbolo al final del nombre nos permitirá pasar un argumento que podemos usar en la configuración del servicio. Lo usaremos para especificar el puerto de pantalla VNC que queremos usar cuando administremos el servicio.
Agregue 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@.servicio
[Unit]Description=Start TightVNC server at startupAfter=syslog.target network.target[Service]Type=forkingUser=sammyGroup=sammyWorkingDirectory=/home/sammyPIDFile=/home/sammy/.vnc/%H:%i.pidExecStartPre=-/usr/bin/vncserver -kill :%i /dev/null 21ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%iExecStop=/usr/bin/vncserver -kill :%i[Install]WantedBy=multi-user.target
El ExecStartPre
comando detiene VNC si ya se está ejecutando. El ExecStart
comando inicia VNC y establece la profundidad de color en 24 bits con una resolución de 1280×800. También puede modificar estas opciones de inicio para satisfacer sus necesidades.
Guarde y cierre el archivo.
A continuación, haga que el sistema conozca el nuevo archivo de unidad.
- sudo systemctl daemon-reload
Habilitar el archivo de unidad.
- sudo systemctl enable vncserver@1.service
El 1
siguiente @
signo indica en qué número de pantalla debe aparecer el servicio, en este caso el predeterminado :1
como se explicó en el Paso 2…
Detenga la instancia actual del servidor VNC si aún está en ejecución.
- vncserver -kill :1
Luego inícielo como lo haría con cualquier otro servicio systemd.
- sudo systemctl start vncserver@1
Puedes verificar que se inició con este comando:
- sudo systemctl status vncserver@1
Si comenzó 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 21 (code=exited, status=0/SUCCESS) Main PID: 22330 (Xtightvnc)...
Su servidor VNC ahora estará disponible cuando reinicie la máquina.
Inicie su túnel SSH nuevamente:
- ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip
Luego, realice una nueva conexión utilizando su software de cliente VNC para localhost:5901
conectarse a su máquina.
Conclusión
Ahora tienes un servidor VNC seguro en funcionamiento en tu servidor Ubuntu 18.04. Ahora podrás administrar tus archivos, software y configuraciones con una interfaz gráfica fácil de usar y familiar, y podrás ejecutar software gráfico como navegadores web de forma remota.
Deja una respuesta