Instalar y configurar el servidor VNC TigerVNC es realmente sencillo. Lo que muchas veces no nos paramos a pensar es que el protocolo en sí no es seguro por lo que el tráfico no está cifrado al conectar al escritorio remoto. Vamos a ver como solucionarlo.
Lo primero es instalar TigerVNC con yum (RHEL, CentOS, Scifi linux, etc). En este caso instalo también el cliente para hacer las pruebas en local:
# yum install tigervnc-server tigervnc
Una vez instalado debemos saber que la configuración se realiza en el fichero /etc/sysconfig/vncservers. Los comentarios del fichero nos indican claramente como configurarlo, también hice un artículo hace un tiempo, echadle un vistazo: Instalar y configurar vnc-server en CentOS/RHEL/Fedora
He creado un usuario «alex» al que únicamente se le permite el acceso local por seguridad:
# The VNCSERVERS variable is a list of display:user pairs. # # Uncomment the lines below to start a VNC server on display :2 # as my 'myusername' (adjust this to your own). You will also # need to set a VNC password; run 'man vncpasswd' to see how # to do that. # # DO NOT RUN THIS SERVICE if your local area network is # untrusted! For a secure way of using VNC, see this URL: # http://kbase.redhat.com/faq/docs/DOC-7028 # Use "-nolisten tcp" to prevent X connections to your VNC server via TCP. # Use "-localhost" to prevent remote VNC clients connecting except when # doing so through a secure tunnel. See the "-via" option in the # `man vncviewer' manual page. # VNCSERVERS="2:myusername" # VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost" VNCSERVERS="2:ale VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"
Creamos el password VNC para el usuario del siguiente modo:
# su alex -c "vncpasswd" Password: XXXX Verify: XXXX
Arrancamos el servidor VNC para el usuario alex:
[alex@localhost /]$ vncserver xauth: creating new authority file /home/alex/.Xauthority New 'rhcsa:1 (alex)' desktop is rhcsa:1 Starting applications specified in /home/alex/.vnc/xstartup Log file is /home/alex/.vnc/rhcsa:1.log
Llegados a este punto podemos acceder sin problemas en local al escritorio remoto con el comando vncviewer:
$ vncviewer localhost:1
Desde fuera no, por motivos de seguridad. Para ello vamos a crear un tunel SSH de modo que las conexiones VNC con el exterior sí que estén cifradas. Vamos a usar por ejemplo el puerto 6922 para el tunel. El servidor VNC se encuentra en la IP 10.0.0.100, desde el equipo remoto con el que queremos conectar al servidor creamos el tunel:
$ ssh alex@10.0.0.100 -L 6922:10.0.0.100:5901 -N
Y ya está, podemos acceder remotamente al servidor VNC de forma segura con el nuevo puerto:
$ vncviewer localhost:6922
Si queréis usar el estandar podéis mantener los puertos de VNC:
$ ssh alex@10.0.0.100 -L 5901:10.0.0.100:5901 -N
$ vncviewer localhost:1