VPS en Linux con interfaz gráfica: lanzamiento de un servidor VNC en Ubuntu 18.04

VPS en Linux con interfaz gráfica: lanzamiento de un servidor VNC en Ubuntu 18.04
Algunos usuarios alquilan VPS relativamente económicos con Windows para ejecutar servicios de escritorio remoto. Se puede hacer lo mismo en Linux sin alojar su propio hardware en un centro de datos ni alquilar un servidor dedicado. Algunas personas necesitan un entorno gráfico familiar para pruebas y desarrollo, o un escritorio remoto con un amplio canal para trabajar desde dispositivos móviles. Hay muchas opciones para utilizar el sistema Virtual Network Computing (VNC) basado en el protocolo Remote FrameBuffer (RFB). En este breve artículo te contamos cómo configurarlo en una máquina virtual con cualquier hipervisor.

Tabla de contenido:

Seleccionar un servidor VNC
Instalacion y configuracion
Iniciar un servicio a través de systemd
Conexión de escritorio

Seleccionar un servidor VNC

El servicio VNC se puede integrar en el sistema de virtualización y el hipervisor lo conectará con los dispositivos emulados y no será necesaria ninguna configuración adicional. Esta opción implica una sobrecarga significativa y no es compatible con todos los proveedores, incluso en una implementación que requiere menos recursos, cuando en lugar de emular un dispositivo gráfico real, se transfiere una abstracción simplificada (framebuffer) a la máquina virtual. A veces, un servidor VNC está vinculado a un servidor X en ejecución, pero este método es más adecuado para acceder a una máquina física y, en una virtual, crea una serie de dificultades técnicas. La forma más sencilla de instalar un servidor VNC es con un servidor X integrado. No requiere dispositivos físicos (adaptador de vídeo, teclado y ratón) ni su emulación mediante hipervisor, por lo que es apto para cualquier tipo de VPS.

Instalacion y configuracion

Necesitaremos una máquina virtual con Ubuntu Server 18.04 LTS en su configuración predeterminada. Existen varios servidores VNC en los repositorios estándar de esta distribución: TightVNC, TigerVNC, x11vnc y otros. Nos decidimos por TigerVNC, una bifurcación actual de TightVNC, que no cuenta con el soporte del desarrollador. La configuración de otros servidores se realiza de forma similar. También es necesario elegir un entorno de escritorio: la mejor opción, en nuestra opinión, sería XFCE debido a los requisitos relativamente bajos de recursos informáticos. Quien lo desee puede instalar otro DE o WM: todo depende de las preferencias personales, pero la elección del software afecta directamente la necesidad de RAM y núcleos informáticos.

VPS en Linux con interfaz gráfica: lanzamiento de un servidor VNC en Ubuntu 18.04

La instalación del entorno de escritorio con todas las dependencias se realiza con el siguiente comando:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

A continuación necesitas instalar el servidor VNC:

sudo apt-get install tigervnc-standalone-server tigervnc-common

Ejecutarlo como superusuario es una mala idea. Cree un usuario y un grupo:

sudo adduser vnc

VPS en Linux con interfaz gráfica: lanzamiento de un servidor VNC en Ubuntu 18.04

Agreguemos el usuario al grupo sudo para que pueda realizar tareas relacionadas con la administración. Si no es necesario, puedes omitir este paso:

sudo gpasswd -a vnc sudo

El siguiente paso es ejecutar el servidor VNC con privilegios de usuario vnc para crear una contraseña segura y archivos de configuración en el directorio ~/.vnc/. La longitud de la contraseña puede ser de 6 a 8 caracteres (los caracteres adicionales se cortan). Si es necesario, también se establece una contraseña para visualización únicamente, es decir. sin acceso al teclado y al mouse. Los siguientes comandos se ejecutan como usuario vnc:

su - vnc
vncserver -localhost no

VPS en Linux con interfaz gráfica: lanzamiento de un servidor VNC en Ubuntu 18.04
De forma predeterminada, el protocolo RFB utiliza el rango de puertos TCP de 5900 a 5906; este es el llamado. puertos de visualización, cada uno correspondiente a una pantalla del servidor X. En este caso, los puertos están asociados a las pantallas de :0 a :6. La instancia del servidor VNC que lanzamos escucha el puerto 5901 (pantalla: 1). Otras instancias pueden funcionar en otros puertos con pantallas :2, :3, etc. Antes de realizar más configuraciones, debe detener el servidor:

vncserver -kill :1

El comando debería mostrar algo como esto: "Eliminación del proceso Xtigervnc ID 18105... ¡éxito!"

Cuando se inicia TigerVNC, ejecuta el script ~/.vnc/xstartup para configurar los ajustes de configuración. Creemos nuestro propio script, primero guardando una copia de seguridad del existente, si existe:

mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup

La sesión del entorno de escritorio XFCE se inicia mediante el siguiente script xstartup:

#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &

El comando xrdb es necesario para que VNC lea el archivo .Xresources en el directorio de inicio. Allí el usuario puede definir varias configuraciones gráficas del escritorio: representación de fuentes, colores de terminal, temas de cursor, etc. El script debe hacerse ejecutable:

chmod 755 ~/.vnc/xstartup

Esto completa la configuración del servidor VNC. Si lo ejecuta con el comando vncserver -localhost no (como usuario vnc), puede conectarse con la contraseña especificada anteriormente y ver la siguiente imagen:

VPS en Linux con interfaz gráfica: lanzamiento de un servidor VNC en Ubuntu 18.04

Iniciar un servicio a través de systemd

Iniciar manualmente un servidor VNC no es adecuado para uso en combate, por lo que configuraremos un servicio del sistema. Los comandos se ejecutan como root (usamos sudo). Primero, creemos un nuevo archivo de unidad para nuestro servidor:

sudo nano /etc/systemd/system/[email protected]

El símbolo @ en el nombre le permite pasar un argumento para configurar el servicio. En nuestro caso, especifica el puerto de visualización VNC. El archivo unitario consta de varias secciones:

[Unit]
Description=TigerVNC server
After=syslog.target network.target

[Service]
Type=simple
User=vnc 
Group=vnc 
WorkingDirectory=/home/vnc 
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Luego debes notificar a systemd sobre el nuevo archivo y activarlo:

sudo systemctl daemon-reload
sudo systemctl enable [email protected]

El número 1 en el nombre especifica el número de pantalla.

Detenga el servidor VNC, inícielo como servicio y verifique el estado:

# от имени пользователя vnc 
vncserver -kill :1

# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1

Si el servicio se está ejecutando, deberíamos obtener algo como esto.

VPS en Linux con interfaz gráfica: lanzamiento de un servidor VNC en Ubuntu 18.04

Conexión de escritorio

Nuestra configuración no utiliza cifrado, por lo que los atacantes pueden interceptar los paquetes de red. Además, en los servidores VNC con bastante frecuencia encontrar vulnerabilidades, por lo que no debes abrirlos para acceder desde Internet. Para conectarse de forma segura en su computadora local, debe empaquetar el tráfico en un túnel SSH y luego configurar un cliente VNC. En Windows, puede utilizar un cliente SSH gráfico (por ejemplo, PuTTY). Por seguridad, TigerVNC en el servidor solo escucha a localhost y no es accesible directamente desde redes públicas:


sudo netstat -ap |more

VPS en Linux con interfaz gráfica: lanzamiento de un servidor VNC en Ubuntu 18.04
En Linux, FreeBSD, OS X y otros sistemas operativos similares a UNIX, se crea un túnel desde la computadora cliente usando la utilidad ssh (sshd debe estar ejecutándose en el servidor VNC):

ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip

La opción -L vincula el puerto 5901 de la conexión remota al puerto 5901 en localhost. La opción -C habilita la compresión y la opción -N le dice a ssh que no ejecute el comando remoto. La opción -l especifica el inicio de sesión para el inicio de sesión remoto.

Después de configurar el túnel en la computadora local, debe iniciar el cliente VNC y establecer una conexión con el host 127.0.0.1:5901 (localhost:5901), utilizando la contraseña especificada previamente para acceder al servidor VNC. Ahora podemos comunicarnos de forma segura a través de un túnel cifrado con el entorno de escritorio gráfico XFCE en el VPS. En la captura de pantalla, la utilidad top se ejecuta en el emulador de terminal para mostrar el bajo consumo de recursos informáticos de la máquina virtual. Entonces todo dependerá de las aplicaciones del usuario.

VPS en Linux con interfaz gráfica: lanzamiento de un servidor VNC en Ubuntu 18.04
Puede instalar y configurar un servidor VNC en Linux en casi cualquier VPS. Esto no requiere configuraciones costosas y que consumen muchos recursos con emulación de adaptadores de vídeo ni la compra de licencias de software comerciales. Además de la opción de servicio del sistema que consideramos, hay otras: iniciar en modo demonio (a través de /etc/rc.local) cuando se inicia el sistema o bajo demanda a través de inetd. Este último es interesante para crear configuraciones multiusuario. Internet Superserver iniciará el servidor VNC y conectará el cliente a él, y el servidor VNC creará una nueva pantalla e iniciará la sesión. Para autenticarse dentro de él, puede utilizar un administrador de visualización gráfica (por ejemplo, LightDM), y después de desconectar el cliente, la sesión se cerrará y se finalizarán todos los programas que trabajan con la pantalla.

VPS en Linux con interfaz gráfica: lanzamiento de un servidor VNC en Ubuntu 18.04

Fuente: habr.com

Añadir un comentario