nrs1022
Usuario (Argentina)
¡Hola a tod@s! Este es mi primer post y me gustaría compartir con ustedes unas herramientas que me han resultado de mucha utilidad en lo que se refiere a acceso remoto. Como muchos de ustedes sabrán, existen muchas aplicaciones que permiten el acceso a un escritorio ubicado remotamente. Pero lo que no es muy conocido es que en Linux se puede acceder a un escritorio en forma remota, sin que ese escritorio sea necesariamente uno "real". ¿Para qué sirve un escritorio remoto virtual? La idea de un escritorio remoto virtual puede aplicarse en entornos en donde se necesita acceder u operar un equipo ubicado remotamente, sin interrumpir la actividad ni la visual del escritorio real (Es decir, el escritorio utilizado por el usuario que está trabajando en el equipo remoto). Con un escritorio remoto virtual uno puede abrir aplicaciones de ese equipo, y esas aplicaciones quedan abiertas en ese escritorio virtual en lugar de usar la pantalla física. ¿Cómo crear un escritorio remoto virtual? Para poder crear uno necesitamos tener instaladas tres aplicaciones en el equipo remoto. Estas aplicaciones son: Xvfb, Fluxbox y X11VNC. Estas aplicaciones pueden ser instaladas en cualquier distribución moderna: en mi caso les mostraré los pasos para instalarlas en Ubuntu pero de forma similar se puede instalar en otras distribuciones. Para instalarlas todas juntas hacemos simplemente: sudo apt-get install xvfb fluxbox x11vnc ¿Que función realizan estas aplicaciones? En primer lugar les mencionaré a Xvfb: En Linux es posible utilizar más de una pantalla a la vez. Xvfb (X Virtual Frame Buffer) es un servidor basado en X11 que, a diferencia de otros, permite realizar operaciones gráficas sin tener una pantalla real, es decir que todas las operaciones se realizan en memoria. Para las aplicaciones cliente de X11 este servidor actúa normalmente como cualquier otro servidor X pero nada es mostrado en una pantalla real. De hecho, Xvfb puede ser usado sin pantalla, teclado o mouse (Solo necesita una red para poder ser utilizado). Asociando una “pantalla” a Xvfb nos permitirá operar con ella normalmente como cualquier otra pantalla real. Para poder utilizar una pantalla asociada a Xvfb necesitamos un programa que nos permita acceder a ella por red, en este caso usaremos X11VNC para generar una conexión remota a través del protocolo VNC, y así poder visualizar y operar esa pantalla virtual. Aunque con Xvfb y X11VNC pareciera suficiente, necesitamos tener un gestor de ventanas ya que de por sí no podríamos hacer casi nada en esa pantalla virtual. En este caso usaremos Fluxbox. Fluxbox es un gestor de ventanas caracterizado por ser uno muy sencillo, liviano y de muy poco uso de memoria. Si ustedes lo desean pueden usar otros gestores de ventanas, pero para mantener agilidad y reducir el consumo de memoria Fluxbox es la mejor opción. ¿Y cómo creo un escritorio virtual? Una vez descargados los tres programas podemos usar el siguiente script como ejemplo para poder crear el escritorio virtual: #!/bin/sh export DISPLAY=:1 Xvfb :1 -screen 0 640x480x16 & fluxbox & x11vnc -display :1 -shared -xkb -skip_lockkeys -forever -noxdamage -passwd 123456 & Hay que guardar este script en una carpeta accesible. En mi caso lo voy a guardar en mi carpeta de usuario con el nombre de “escritorio_remoto”: /home/usuario/escritorio_remoto Una vez guardada, hay que darle atributos de ejecución con el comando: chmod +x /home/usuario/escritorio_remoto Finalmente, lo podemos ejecutar desde una terminal o desde un explorador de archivos: /home/usuario/escritorio_remoto Notar que si se ejecuta en la terminal esto lo ejecuta en la ventana actual, debemos abrir otra terminal para usar la conexión. En esa segunda terminal utilizaremos el cliente VNC, simplemente escribimos: vncviewer localhost o utilizaremos el cliente de VNC que nos resulte más cómodo. Si la conexión es correcta, nos preguntará la contraseña. Si está todo bien, veremos el escritorio remoto como en este ejemplo: Paso a comentar el código: export DISPLAY=:1 Nos permite definir una nueva pantalla en el sistema (Tengan en cuenta que la primera pantalla es :0), si tuviéramos más pantallas habrá que cambiar el valor :1 por :2 o sucesivamente). Xvfb :1 -screen 0 640x480x16 & Inicia Xvfb sobre la pantalla :1 con una resolución de 640x480, 16 bits. Estos valores los pueden modificar a gusto: Pueden utilizar cualquier resolución aunque parezca ridícula (Xvfb no está vinculado a hardware alguno, es virtual) pero traten de no especificar pantallas demasiado chicas (Muchas aplicaciones no están pensadas para pantallas muy chicas) ni demasiado grandes (Necesitaremos mayor velocidad de conexión para operar con ella). El & (ampersand) es para que el script no se detenga a esperar a que Xvfb termine. fluxbox & Simplemente inicia Fluxbox en la pantalla creada con Xvfb. x11vnc -display :1 -shared -xkb -skip_lockkeys -forever -noxdamage -passwd 123456 & Inicia X11VNC como servidor de VNC de esa pantalla virtual. La opción -shared hace la conexión compartida (Varios clientes de VNC pueden operar en simultáneo con la misma pantalla). -forever hace que el servidor VNC funcione permanentemente y no se cierre cuando el cliente VNC se desconecta. -xkb y -skip_lockkeys da mejor compatibilidad con las teclas. -noxdamage permite mejor compatibilidad con Compiz y otros efectos gráficos, y -passwd 123456 especifica la contraseña a utilizar para conectarse al servidor VNC (123456). Nota: Si lo ejecutamos en nuestra cuenta de usuario, el escritorio remoto virtual se cerrará cuando cerremos la sesión de usuario. Para que se abra cada vez que iniciemos sesión en el equipo simplemente agregaremos el script en “Aplicaciones al inicio” en Ubuntu. ¿Puedo usar el escritorio virtual en Internet o en otro equipo? Por supuesto, solo recuerden que se debe liberar el puerto 5900 utilizado por el servidor VNC en caso de estar detrás de un Router o cortafuegos. Recuerden, adicionalmente, que si bien la pantalla es virtual otras acciones (Por ejemplo, reproducir un sonido o borrar un archivo) no serán virtuales y pueden ser percibidos por el usuario que está utilizando el equipo. Ojalá este post les resulte útil. Desde ya sus comentarios y preguntas son muy bienvenidas. Si hay alguna corrección, omisión o cualquier cosa que necesite modificar por favor avísenme. ¡Muchas gracias a tod@s! Nicolás. Nota: Este post está basado en los conceptos de Xvfb http://es.wikipedia.org/wiki/Xvfb (Su manual en inglés está en http://www.manpagez.com/man/1/Xvfb/), de Fluxbox http://es.wikipedia.org/wiki/Fluxbox y del manual de X11VNC http://linux.die.net/man/1/x11vnc