Podłącz ponownie do utraconej sesji X11

27

Korzystam z przekazywania X11, sshaby uruchamiać aplikacje Linuksa na moim komputerze z systemem Windows, a gdy sieć spada, traci wszystko, co działało. Czy jest coś podobnego do screenX11?

Abdullah Jibaly
źródło
Wyjaśniać. Dlaczego nie po prostu użyć screen? Czy XVNC? Uruchamiasz ekran na maszynie z Linuksem, a kiedy twoja sieć spada, połącz się ponownie i użyj, screen -DRaby ponownie dołączyć sesję.
nix
@nix Czy to zadziała dla aplikacji X?
Michał Mrożek
2
@nix Nie sądzę, że screendziała z aplikacjami GUI.
Abdullah Jibaly
Oczywiście ekran wymagałby uruchomienia z Xtermu.
nix

Odpowiedzi:

32

Widelec Xpra lub Xpra twierdzi, że jest dokładnie taki:

Zasadniczo jest to ekran dla zdalnych aplikacji X.

Od jakiegoś czasu go nie używałem, ale działało całkiem dobrze, gdy go wypróbowałem. Uruchom serwer na zdalnym komputerze:

[remote] $ xpra start :13

Następnie podłączasz się do serwera z lokalnego komputera:

[local] $ xpra attach ssh:remote:13

A teraz wszystko wyświetlane na X wyświetlaczu 13 na zdalnym komputerze pojawi się lokalnie:

[remote] $ DISPLAY=:13 xeyes
Michał Mrożek
źródło
4
Istnieje również WinSwitch , który na pierwszy rzut oka wygląda, jakby integrował xpra i inne powiązane oprogramowanie.
Gilles 'SO - przestań być zły'
6

Szukasz VNC . Zasada jest nieco podobna do ekranu: uruchamiasz serwer VNC ( SCREENproces backgound ) i klienta VNC ( screenproces pierwszego planu ). Serwer VNC jest serwerem X, więc możesz na nim uruchamiać aplikacje X.

Uruchom serwer VNC na komputerze z systemem Linux i klient na komputerze z systemem Windows. Masz do wyboru kilka implementacji; jedną z możliwości jest TightVNC . TightVNC jest w wielu dystrybucjach Linuksa (jeśli nie jest w twoim, zainstaluj go lub wybierz inną implementację), i jest klient Windows.

Jeśli twoje dwie maszyny nie są bardzo blisko w sieci - jeśli między nimi jest zapora ogniowa lub ryzyko podsłuchu - musisz tunelować ruch VNC przez ssh. Poproś ssh o przekazanie lokalnego portu 5900 do zdalnego portu 5900 (5900 odpowiada wyświetlaczowi :0, użyj 5901 dla :1itp.).

Gilles „SO- przestań być zły”
źródło
4

W rzeczywistości możesz przesłać X do screen. Jedyną rzeczą do zrobienia jest, aby skonfigurować $DISPLAYw screenoknie tak, że jest to ta sama strona z niego.

Procedura

po ssh -Xw zdalnym komputerze wpisz

$ echo $DISPLAY

i zwykle kopiuj wynik localhost:N.0. Następnie wprowadź screenw screenoknie lokalnym

$ export DISPLAY=localhost:N.0

Następnie uruchom dowolny Xwymagany program w oknie ekranowym.

UWAGA: dla każdego screenokna zmienne środowiskowe są niezależne. Dlatego dla każdego okna może być konieczne skonfigurowanie go osobno.

Referencje

Czong
źródło
1
Cześć Chong, witamy na unix.SE. Ponieważ szczegóły rozwiązania, które łączysz, są proste, lepiej jest je tutaj ponownie napisać. W ten sposób odpowiedź zostaje zachowana, jeśli coś się stanie z postem na askubuntu.com. Oczywiście dobrym pomysłem jest również utrzymywanie linku, ponieważ pomaga on w pozyskiwaniu materiału.
drs
2
Wypróbowałem to rozwiązanie, ale nie mogę zamknąć sesji ssh bez zabicia działającej aplikacji X. To w jakiś sposób podważa cel tego ... Jak powinienem odłączyć się od zdalnego hosta, pozostawiając działającą aplikację zdalną?
Tonin