Rattacher à la session X11 perdue

27

J'utilise le transfert X11 sshpour exécuter des applications Linux sur ma boîte Windows, et lorsque le réseau tombe, il perd tout ce qui était en cours d'exécution. Y a-t-il quelque chose de similaire à screenX11?

Abdullah Jibaly
la source
Clarifier. Pourquoi ne pas simplement utiliser screen? Ou XVNC? Vous exécutez l'écran sur la machine Linux et lorsque votre réseau tombe, reconnectez et utilisez screen -DRpour rattacher la session.
nix
@nix Cela fonctionnera-t-il pour les applications X?
Michael Mrozek
2
@nix Je ne pense pas que cela screenfonctionne pour les applications gui.
Abdullah Jibaly
Bien sûr, l'écran nécessiterait de fonctionner à partir d'un xterm.
nix

Réponses:

32

Xpra ou la fourche Xpra prétendent être exactement cela:

Donc, fondamentalement, c'est un écran pour les applications X distantes.

Je ne l'ai pas utilisé depuis un moment, mais cela a plutôt bien fonctionné quand je l'ai essayé. Vous démarrez le serveur sur la machine distante:

[remote] $ xpra start :13

Ensuite, vous vous connectez au serveur à partir de votre ordinateur local:

[local] $ xpra attach ssh:remote:13

Et maintenant, tout ce qui est affiché sur l'affichage X 13 sur la machine distante apparaîtra localement:

[remote] $ DISPLAY=:13 xeyes
Michael Mrozek
la source
4
Il y a aussi WinSwitch , qui en un coup d'œil semble intégrer xpra et d'autres logiciels connexes.
Gilles 'SO- arrête d'être méchant'
6

Vous recherchez VNC . Le principe est quelque peu similaire à celui de l'écran: vous exécutez un serveur VNC (le SCREENprocessus d' arrière-plan ) et un client VNC (le screenprocessus de premier plan ). Le serveur VNC est un serveur X, vous pouvez donc y exécuter des applications X.

Exécutez un serveur VNC sur la boîte Linux et un client sur la boîte Windows. Vous avez le choix entre plusieurs implémentations; une possibilité est TightVNC . TightVNC est dans de nombreuses distributions Linux (si ce n'est pas dans la vôtre, installez-le ou choisissez une implémentation différente), et il y a un client Windows.

Si vos deux machines ne sont pas très proches du réseau - s'il y a un pare-feu ou un risque d'écoute indiscrète entre elles - vous devrez tunneler le trafic VNC via ssh. Demandez à ssh de transmettre le port local 5900 au port distant 5900 (5900 correspond à l'affichage :0, utilisez 5901 pour :1, etc.).

Gilles 'SO- arrête d'être méchant'
la source
4

En fait, vous pouvez transférer X dans screen. La seule chose à faire est d'installer le $DISPLAYdans la screenfenêtre de sorte qu'il soit le même à l'extérieur.

Procédure

après ssh -Xdans la machine distante, tapez

$ echo $DISPLAY

et copiez le résultat, généralement localhost:N.0. Entrez ensuite screen, dans la screenfenêtre locale ,

$ export DISPLAY=localhost:N.0

Après cela, exécutez tout Xprogramme requis dans la fenêtre d'écran fera l'affaire.

REMARQUE: pour chaque screenfenêtre, les variables d'environnement sont indépendantes. Ainsi, pour chaque fenêtre, vous devrez peut-être la configurer séparément.

Les références

Chong
la source
1
Salut Chong, bienvenue sur unix.SE. Étant donné que les détails de la solution que vous liez sont simples, il est préférable de les réécrire explicitement ici. De cette façon, la réponse est conservée si quelque chose arrive à la publication sur askubuntu.com. Bien sûr, c'est aussi une bonne idée de garder le lien présent car cela aide à trouver votre matériel.
drs
2
J'ai essayé cette solution, mais je ne peux pas fermer ma session ssh sans tuer l'application X en cours d'exécution. Cela va en quelque sorte à l'encontre de son objectif ... Comment dois-je me déconnecter de l'hôte distant en laissant l'application distante en cours d'exécution?
Tonin