Cuándo estoy en casa viendo la televisión aprovecho los anuncios para consultar el ordenador y trastear un poco con él. El problema de esto es que como la mayoría de las personas el ordenador lo tengo en la habitación y la televisión en el salón.

Para evitar andar paseando por la casa y que me tengan que avisar a grito pelado de que ya ha empezado el programa que estaba viendo he montado un servidor VNC en mi equipo para poder conectar desde el salón con el netbook y TightVNC.

El servidor que he instalado es x11vnc. Vamos a ver como se instala y configura este servidor de escritorio remoto.

Instalar x11vnc

x11vnc se encuentra en los repositorios oficiales de prácticamente todas las distribuciones, por lo tanto podemos instalarlo directamente con nuestro gestor de paquetes.

Logo de UbuntuUbuntu.

[usuario@equipo ~]$ sudo apt-get install x11vnc

Logo de FedoraFedora.

[usuario@equipo ~]$ su -c 'yum -y install x11vnc'

Logo de Arch LinuxArch Linux.

[usuario@equipo ~]$ sudo pacman -S x11vnc

Establecer la contraseña del servidor

Establecer una contraseña

El servidor VNC se puede ejecutar recién instalado sin ningún tipo de configuración, sin embargo deberíamos establecer como mínimo una contraseña de acceso para evitar que cualquiera se pueda conectar sin autorización.

[usuario@equipo ~]$ x11vnc -storepasswd
Enter VNC password:
Verify password:
Write password to /home/usuario/.vnc/passwd? [y]/n y
Password written to: /home/usuario/.vnc/passwd

El comando anterior nos pide que introduzcamos una contraseña y por defecto ésta se almacena encriptada en el archivo ~/.vnc/passwd.

Establecer múltiples contraseñas

Una opción interesante del servidor es que podemos establecer la conexión con permisos completos o limitados. Con los permisos completos podremos interactuar con la máquina remota mientras que con los limitados solo podremos observar lo que el usuario realiza en el equipo remoto.

Cuando ejecutamos el servidor podemos especificar que solo queremos mirar con la opción -viewonly. No obstante es más cómodo tener una o varias contraseñas para acceder de forma remota pudiendo interactuar con la máquina o simplemente observar.

Esas contraseñas se almacenan en un archivo de texto plano en la ubicación que nosotros queramos. Esa ubicación debería ser un lugar seguro al cual solo pueda acceder los usuarios que necesiten permisos sobre este archivo de contraseñas.

El archivo de contraseñas sería el siguiente:

contraseña1
contraseña2

Por defecto la contraseña de la primera línea es la contraseña de acceso completo y la segunda la de observación. Si queremos tener más de una contraseña para acceder con permisos completos y otras para solo observar el archivo debe ser como este otro.

contraseña1
contraseña2
contraseña3
__BEGIN_VIEWONLY__
contraseña4
contraseña5

En este segundo archivo todas las contraseñas que se encuentran por encima de la linea que pone __BEGIN_VIEWONLY__ son las contraseñas de acceso completo y las que se encuentran por debajo son las contraseñas para observar solamente.

Después de crear el archivo conviene guardarlo adecuadamente y darle los permisos pertinentes para que solo pueda acceder quien debe y no cualquiera que vea el archivo. Yo almaceno el archivo en la carpeta .vnc del directorio home con el nombre passwdfile.

Ejecutar el servidor

Ejecutar el servidor VNC es tan sencillo como abrir un terminal y escribir.

[usuario@equipo ~]$ x11vnc

Ejecutar de esta forma el servidor tiene la desventaja de que en el momento que el cliente se desconecte del servidor éste también se cerrará. Además de esto el servidor no pedirá ninguna clave y cualquiera podrá conectarse al servidor libremente.

Si queremos mantener el servidor abierto después de que un cliente se desconecte utilizamos la opción -forever.

[usuario@equipo ~]$ x11vnc -forever

Aún así el servidor no pedirá contraseña. Para que el servidor pida una contraseña al conectar utilizamos la opción -rfbauth ~/.vnc/passwd.

Esta contraseña es una contraseña de acceso completo.

[usuario@equipo ~]$ x11vnc -forever -rfbauth ~/.vnc/passwd

Si queremos utilizar contraseñas diferentes para acceder con acceso completo o solo para observar especificamos el archivo que contiene las contraseñas con la opción -passfile seguido de la ruta del archivo con las contraseñas.

[usuario@equipo ~]$ x11vnc -forever -passwdfile ~/.vnc/passwdfile

En caso de tener los archivos de contraseñas ~/.vnc/passwd y ~/.vnc/passwdfile podemos indicar al servidor que utilice las contraseñas de esos dos archivos con la opción -usepw.

[usuario@equipo ~]$ x11vnc -forever -usepw

Cambiar el puerto por defecto

Una buena práctica es cambiar el puerto de conexión por defecto a otro que nosotros establezcamos. Para cambiar el puerto utilizamos la opción -rfbport seguido del número del puerto.

[usuario@equipo ~]$ x11vnc -forever -rfbport 5950 -usepw

Conectar con el servidor VNC

Para conectar con el servidor VNC recién configurado necesitamos otro equipo conectado a la misma red local y un cliente VNC. Para windows podemos utilizar TightVNC y en linux gtk-vnc o vinagre.

Para más información sobre opciones de configuración del servidor consulta la página man de x11vnc y los enlaces del final del post.

Enlaces
Preguntas frecuentes de x11vnc
Opciones de x11vnc