Schließen Sie die X11-Sitzung erneut an

27

Ich verwende die X11-Weiterleitung ssh, um Linux-Apps auf meiner Windows-Box auszuführen, und wenn das Netzwerk ausfällt, geht alles verloren, was ausgeführt wurde. Gibt es etwas Ähnliches screenfür X11?

Abdullah Jibaly
quelle
Klären. Warum nicht einfach benutzen screen? Oder XVNC? Sie führen den Bildschirm auf dem Linux-Computer aus, und wenn Ihr Netzwerk unterbrochen wird, stellen Sie die Verbindung wieder her und stellen Sie screen -DRdie Sitzung erneut her.
nichts
@nix Funktioniert das für X-Apps?
Michael Mrozek
2
@nix Ich glaube nicht, dass es screenfür GUI-Apps funktioniert.
Abdullah Jibaly
Für den Bildschirm muss natürlich ein xterm ausgeführt werden.
nichts

Antworten:

32

Xpra oder die Xpra-Gabel behaupten genau das zu sein:

Im Grunde genommen ist es also ein Bildschirm für Remote-X-Apps.

Ich habe es eine Weile nicht mehr benutzt, aber es hat ziemlich gut funktioniert, als ich es ausprobiert habe. Sie starten den Server auf dem Remotecomputer:

[remote] $ xpra start :13

Anschließend stellen Sie von Ihrem lokalen Computer aus eine Verbindung zum Server her:

[local] $ xpra attach ssh:remote:13

Und jetzt wird alles, was auf der X-Anzeige 13 des Remote-Computers angezeigt wird, lokal angezeigt:

[remote] $ DISPLAY=:13 xeyes
Michael Mrozek
quelle
4
Es gibt auch WinSwitch , das auf den ersten Blick aussieht, als würde es xpra und andere verwandte Software integrieren.
Gilles 'SO- hör auf böse zu sein'
6

Sie suchen nach VNC . Das Prinzip ähnelt in etwa dem von screen: Sie führen einen VNC-Server (den Hintergrundprozess SCREEN) und einen VNC-Client (den Vordergrundprozess screen) aus. Der VNC-Server ist ein X-Server, auf dem Sie X-Anwendungen ausführen können.

Führen Sie einen VNC-Server auf der Linux-Box und einen Client auf der Windows-Box aus. Sie haben mehrere Implementierungen zur Auswahl; Eine Möglichkeit ist TightVNC . TightVNC ist in vielen Linux-Distributionen enthalten (wenn es nicht in Ihrer ist, installieren Sie es oder wählen Sie eine andere Implementierung aus), und es gibt einen Windows-Client.

Wenn Ihre beiden Computer nicht sehr eng mit dem Netzwerk verbunden sind - wenn eine Firewall vorhanden ist oder die Gefahr besteht, dass sie abgehört werden - müssen Sie den VNC-Verkehr durch ssh tunneln. Bitten Sie ssh, den lokalen Port 5900 an den Remote-Port 5900 weiterzuleiten (5900 entspricht der Anzeige :0, verwenden Sie 5901 für :1usw.).

Gilles 'SO - hör auf böse zu sein'
quelle
4

Tatsächlich können Sie X in weiterleiten screen. Das Einzige, was Sie tun müssen, ist, $DISPLAYdas screenFenster so einzurichten, dass es außen gleich ist.

Verfahren

nach dem ssh -Xin der entfernten Maschine, Typ

$ echo $DISPLAY

und kopieren Sie das Ergebnis in der Regel localhost:N.0. Geben Sie dann screenim lokalen screenFenster Folgendes ein:

$ export DISPLAY=localhost:N.0

Führen Sie danach ein beliebiges Xerforderliches Programm innerhalb des Bildschirmfensters aus.

HINWEIS: Für jedes screenFenster sind die Umgebungsvariablen unabhängig. Daher müssen Sie es möglicherweise für jedes Fenster separat einrichten.

Verweise

Chong
quelle
1
Hallo Chong, willkommen bei unix.SE. Da die Details der von Ihnen verknüpften Lösung einfach sind, ist es besser, sie hier explizit neu zu schreiben. Auf diese Weise bleibt die Antwort erhalten, falls etwas mit dem Beitrag auf askubuntu.com passiert. Natürlich ist es eine gute Idee, den Link auch weiterhin vorhanden zu halten, da dies die Beschaffung Ihres Materials erleichtert.
drs
2
Ich habe diese Lösung ausprobiert, kann aber meine ssh-Sitzung nicht schließen, ohne die laufende X-Anwendung zu beenden. Dies macht den Zweck des Problems irgendwie zunichte. Wie soll ich die Verbindung zum Remote-Host trennen und die Remote-Anwendung laufen lassen?
Tonin