No perder la sesión remota de Linux

xpra-logo-gnuAnteriormente ya hemos aprendido a conectarnos a nuestro servidor Linux con éste post.

Si eres usuario habitual de estas herramientas, cuando nos conectamos a una sesión remota a Linux tenemos el problema que en muchas ocasiones tenemos que desconectar la conexión cuando estamos ejecutando un comando que aun no terminó. Habitualmente el cierre de la conexión mata el proceso que estamos ejecutando, teniendo que empezar de nuevo. Esto es más problemático cuando la conexión al servidor es mucho más inestable (WiFi o conexión móvil).

[bctt tweet=»Con #screen y #xpra podemos mantener la conexión remota siempre activa»]

Tanto si nos conectamos en modo línea de comandos como si nos conectamos a las XWindows, existe la posibilidad de mantenerlas abiertas para futuras conexiones.

No perder la sesión remota de línea de comandos

screen es un gestor de sesiones de consola, que permite lanzar una sesión y recuperarla más adelante, si la conexión se corta o no queremos mantener el equipo conectado y encendido permanentemente.

Su uso es muy sencillo, basta con ejecutar este comando, con lo que se abrirá la sesión existente de haberla, o en caso contrario se creará una nueva:

screen -x -R

Una vez dentro de la sesión, puede controlarse con los siguientes atajos de teclado:

  • Control + A + D : Separarse sin cerrar la sesión (se podrá recuperar más adelante).
  • Control + D : Cerrar la sesión definitivamente.

Esto permite iniciar una sesión en un equipo, conectarse desde otro y recuperarla (interactuando incluso desde ambos equipos al mismo tiempo). O bien cerrar la conexión y recuperar la sesión más tarde.

El problema aparece cuando una aplicación utiliza ventanas gráficas, ya que, aunque se utilice el X11 forwarding combinado con screen, no es posible recuperar las ventanas más adelante tan solo usando screen.

No perder la sesión remota de XWindows remota

xpra puede entenderse como un análogo de screen para ventanas. Es un servidor de X11 que permite conectarse a él desde diferentes lugares (eso sí, no al mismo tiempo) y así recuperar las ventanas de las aplicaciones ejecutándose en remoto.

Si la aplicación es lanzada desde la propia sesión SSH, Xpra no impide que la aplicación se cierre al cortar la conexión SSH, por lo que lo habitual es combinar el uso de Xpra y screen:

xpra start :100

DISPLAY=:100

screen -x -R

A partir de entonces, las aplicaciones lanzadas dentro de la sesión de screen se redirigirán al servidor Xpra, y podrán ser recuperadas en cualquier momento. Para hacerlo dentro de la sesión de screen, se debe especificar el display correcto.

firefox & DISPLAY=:100

xpra attach :100

No es necesario conectarse por SSH previamente para recuperar una ventana, ya que Xpra puede hacerlo directamente con el siguiente comando:

xpra attach ssh:usuario@equipo:100

En la página de manual de Xpra hay mucha más información interesante, ya que permite hacer muchas más cosas.

Deja un comentario