jueves, 16 de agosto de 2012

Compartir el escritorio con X11VNC en Debian GNU/Linux

Hola a todos,

Quiero compartir con vosotros la forma en que me conecto a mi servidor vía VNC

Los principales entornos de escritorio suelen tener herramientas para conectarse a otros equipos y recibir conexiones entrantes vía VNC. Si no me equivoco Gnome tiene a Vinagre para conectarse remotamente a otros equipos, y a Vino para recibir conexiones entrantes (los nombres no son broma aunque lo parezca xD). Al menos así era en los tiempos de Gnome 2.

Igualmente ocurre en KDE, donde tenemos a KRDC para conectarnos a otros equipos y a KRFB para recibir conexiones entrantes. No obstante, los usuarios de KDE tenemos el inconveniente de que KRFB tiene un bug sin solucionar y, al menos hasta donde yo sé, no tiene solución, y eso imposibilita aceptar conexiones (hablando, claro está, de KDE 4.4)

Por tanto, yo me he buscado la vida para instalar un servidor VNC que funcione, y para ello he usado la aplicación X11VNC

X11VNC es una aplicación en línea de comandos que puede correr en el sistema como demonio y permite aceptar conexiones entrantes vía VNC y ceder el control del escritorio a un cliente. Para instalarlo en Debian procedemos así:

$ sudo aptitude install x11vnc

Una vez instalado procedemos a configurarle una contraseña para poder conectarnos con seguridad. Esta contraseña se almacenará encriptada en la ruta /home/usuario/.vnc/passwd:

$ x11vnc -storepasswd

Una vez almacenada la contraseña, nos quedará iniciar el servicio con las opciones adecuadas:

$ x11vnc -bg -usepw -forever -rfbport puerto

Donde la opción -bg indica que lo lanzaremos en modo background (segundo plano), donde -usepw indica que se usará la contraseña almacenada en el fichero generado en el comando anterior, donde -forever indica que siga aceptando más conexiones cuando finalice la primera sesión, y donde -rfbport indica el puerto que usaremos en la conexión. 

Debemos mencionar que si bien la opción -rfbport no es necesaria, puesto que si no la añadimos se usará el puerto por defecto (el 5900), sí que es altamente recomendable ya que de esta forma podremos usar un puerto distinto, aumentando considerablemente el nivel de seguridad de nuestro servidor VNC.

Con esto tendremos el servidor VNC corriendo en nuestro sistema, con el inconveniente de que no se ejecutará automáticamente en el siguiente inicio de sesión. Para solucionarlo recurriremos al administrador de aplicaciones que se ejecutarán al inicio de nuestra sesión.

En el caso de KDE, generaremos un fichero de texto en la ruta /home/usuario/.kde/Autostart llamado x11vnc cuyo contenido será el siguiente:

#!/bin/bash
x11vnc -bg -usepw -forever -rfbport puerto

Cambiando, por supuesto, las opciones que consideremos oportunas. Después, una vez generado y guardado, solamente quedará darle permisos de ejecución al fichero:

$ chmod +x x11vnc

Con esto conseguiremos que X11VNC arranque en el inicio del sistema. 

Otra posible forma de conseguir que X11VNC arranque automáticamente es acceder a las Preferencias del Sistema de KDE, opción Autoarranque,  y hacer clic en el botón Añadir programa. En el cajetín en blanco escribiremos lo mismo:

x11vnc -bg -usepw -forever -rfbport puerto

Y así debería conseguirse lo mismo.

También a tener en cuenta es el posible filtrado que pueda hacer nuestro firewall, en caso de disponer de alguno, tanto a nivel local como de internet. Si es el caso, tendremos que redirigir adecuadamente el puerto en cuestión a través de Iptables (por ejemplo) y/o a través de nuestro router, en caso de querer habilitar el acceso remoto a través de Internet.

Por último, cabe mencionar la ingente cantidad de opciones de que dispone la aplicación X11VNC. Estas opciones pueden consultarse con un simple:

$ man x11vnc

Así pues, simple y llanamente esta es la forma en que me conecto vía VNC a mi servidor y estación de trabajo principal.

Espero que os sirva. Un saludo a todos ;-)

4 comentarios:

  1. @luweeds:
    Muchas gracias por éste genial tuto, cada vez accedemos más remotamente a nuestros sistemas. Tengo una duda,una vez configurado para que no arranque automáticamente, ¿el comando para iniciar el servicio debe incluir "-usepw i" y el resto queda idéntico al comando expuesto?
    Gracias Tony de antemano¡¡

    ResponderEliminar
  2. Hola compañero, que gusto verte por aquí ;-)

    Pues resulta para ejecutar X11VNC debes lanzar la aplicación exactamente igual en todos los casos, eso, por supuesto, en caso de que quieras que siempre funcione de la misma manera.

    El comportamiento de X11VNC es desaparecer con el apagado del sistema, y no resucitar hasta que no vuelva a ser lanzado por el usuario. Por tanto, siempre que quieras ejecutar la aplicación tendrás que usar los mismos parámetros.

    Bajo mi punto de vista, lo interesante es que funcione como un servicio, pero por supuesto esto es a gusto del consumidor. En caso de que no quieras que arranque con el sistema, deberás llamar a X11VNC tal y como lo harías si lo ejecutases como servicio.

    En resumen, tanto si lo ejecutas en modo servicio o como si lo haces bajo demanda, las opciones y los parámetros deberían ser los mismos.

    Muchas gracias por pasarte y comentar, compañero @Luweeds, un placer tenerte por aquí ;-)

    ResponderEliminar
  3. Hola. Muchas gracias por el tuto. Tengo una máquina con debian y openbox y buscaba algo así. Va genial.

    ResponderEliminar
  4. Gran aporte. Me parece cojonudo. Bien explicado, sencillo y útil. Gracias

    ResponderEliminar