Configurar un servidor VNC en Linux en Microsoft Azure

Hace unos días te conté cómo era posible acceder por RDP a tus máquinas Linux en Microsoft Azure. Hoy me gustaría seguir otro camino diferente para lograr el mismo resultado, usando un servidor VNC en una máquina Linux en Azure. Para este post voy a utilizar la imagen de Ubuntu Server 16.04 LTS.

Azure Marketplace - Ubuntu Server 16.04 LTS
Azure Marketplace – Ubuntu Server 16.04 LTS

Una vez creada la máquina instala el entorno gráfico que prefieras. En este ejemplo voy a instalar Unity.

sudo apt-get update
sudo apt-get install --no-install-recommends ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal

Ya tienes un Linux con entorno gráfico y ahora necesitas un servidor de VNC. Existen varios servidores de este tipo a día de hoy, asi que para este post he elegido TightVNC.

sudo apt-get install -y tightvncserver

Es necesario modificar el archivo ~/.vnc/xstartup donde se especifica la configuración y los procesos que se van a lanzar cuando se inicie una sesión por VNC a dicha máquina. Una configuración válida podría ser la siguiente:

#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey 
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
x-window-manager &
        
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &

Para arrancar el servicio debes utilizar el comando vncserver. La primera vez que lo ejecutes te pedirá que elijas una password para el acceso a la máquina y una segunda (opcional) para habilitar el acceso a la misma pero sin posiblidad de controlarla. Antes de continuar, al igual que en el post donde te conté cómo conectarte a Linux a través de RDP, es necesario permitir el acceso al puerto donde está a la escucha el servidor VNC. Puedes comprobar qué puertos usa tightVNC con el comando netstat -plant.

vnc server - netstat -plant
vnc server – netstat -plant

Como ves, está haciendo uso de dos puertos: el 5901 y el 6001. El que necesitas exponer es el 5901, por lo que es necesario permitir el acceso al mismo a través de la configuración de la máquina. En el portal de Azure, accede a Network Interfaces > Network Security groupsInbound Security rules. Añade una nueva regla para el puerto que utiliza el servidor VNC.

vnc server - add inbound security rule
vnc server – add inbound security rule

Como cliente para VNC en Windows voy a utilizar UltraVNC Viewer donde basta con especificar la IP pública de tu VM y el puerto 5901.

UltraVNC Viewer
UltraVNC Viewer

Escribe la contraseña que elegiste al arrancar vncserver por primera vez y ya podrás acceder a tu entorno gráfico en Linux

UltraVNC - Ubuntu Server - Unity Desktop
UltraVNC – Ubuntu Server – Unity Desktop

¡Saludos!