Vuelva a conectar a la sesión X11 perdida

27

Estoy usando el reenvío X11 sshpara ejecutar aplicaciones de Linux en mi caja de Windows, y cuando la red se cae, pierde todo lo que se estaba ejecutando. ¿Hay algo similar screenpara X11?

Abdullah Jibaly
fuente
Aclarar. ¿Por qué no solo usar screen? O XVNC? Ejecutas la pantalla en la máquina Linux y cuando tu red cae, vuelve a conectarte y usa screen -DRpara volver a conectar la sesión.
nix
@nix ¿Funcionará eso para las aplicaciones X?
Michael Mrozek
2
@nix No creo que screenfuncione para aplicaciones gui.
Abdullah Jibaly
Por supuesto, la pantalla requeriría ejecutarse desde un xterm.
nix

Respuestas:

32

Xpra o la bifurcación de Xpra afirman ser exactamente eso:

Básicamente es una pantalla para aplicaciones X remotas.

No lo he usado en mucho tiempo, pero funcionó bastante bien cuando lo probé. Inicia el servidor en la máquina remota:

[remote] $ xpra start :13

Luego se conecta al servidor desde su máquina local:

[local] $ xpra attach ssh:remote:13

Y ahora todo lo que se muestra en la pantalla X 13 en la máquina remota aparecerá localmente:

[remote] $ DISPLAY=:13 xeyes
Michael Mrozek
fuente
44
También está WinSwitch , que de un vistazo parece que integra xpra y otro software relacionado.
Gilles 'SO- deja de ser malvado'
6

Estás buscando VNC . El principio es algo similar a la pantalla: ejecuta un servidor VNC (el SCREENproceso de fondo ) y un cliente VNC (el screenproceso de primer plano ). El servidor VNC es un servidor X, por lo que puede ejecutar aplicaciones X en él.

Ejecute un servidor VNC en el cuadro de Linux y un cliente en el cuadro de Windows. Tiene varias implementaciones para elegir; Una posibilidad es TightVNC . TightVNC está en muchas distribuciones de Linux (si no está en la suya, instálelo o elija una implementación diferente), y hay un cliente de Windows.

Si sus dos máquinas no están muy cerca de la red, si hay un cortafuegos o un riesgo de espionaje entre ellas, deberá hacer un túnel del tráfico VNC a través de ssh. Haga que ssh reenvíe el puerto local 5900 al puerto remoto 5900 (5900 corresponde a la pantalla :0, use 5901 para :1, etc.).

Gilles 'SO- deja de ser malvado'
fuente
4

En realidad, puedes reenviar X a screen. Lo único que debe hacer es configurar el $DISPLAYen la screenventana para que sea el mismo lado exterior.

Procedimiento

luego ssh -Xen la máquina remota, escriba

$ echo $DISPLAY

y copie el resultado, generalmente localhost:N.0. Luego ingrese screen, en la screenventana local ,

$ export DISPLAY=localhost:N.0

Después de esto, ejecutará cualquier Xprograma requerido dentro de la ventana de la pantalla.

NOTA: para cada screenventana, las variables de entorno son independientes. Entonces, para cada ventana, es posible que deba configurarla por separado.

Referencias

Chong
fuente
1
Hola Chong, bienvenido a unix.SE. Dado que los detalles de la solución que vincula son simples, es mejor volver a escribirlos explícitamente aquí. De esta manera, la respuesta se conserva si algo le sucede a la publicación en askubuntu.com. Por supuesto, también es una buena idea mantener el enlace presente porque ayuda a obtener su material.
drs
2
Probé esta solución, pero no puedo cerrar mi sesión ssh sin matar la aplicación X en ejecución. Esto de alguna manera anula su propósito ... ¿Cómo debo desconectarme del host remoto dejando la aplicación remota en ejecución?
Tonin