Przeczytałem edytowaną wersję pytania, a jeśli dobrze cię rozumiem, chcesz uruchomić program z SSH bez pokazywania GUI ... po prostu chcesz uruchomić program i to zależy od X Windows, więc potrzebuję go, aby jakoś połączyć się z X Windows na samym serwerze.
Są dwie rzeczy, które musisz zrobić. Musisz zezwolić na połączenia spoza X Windows, a następnie powiedzieć powłoce (w SSH), z którym serwerem X ma się połączyć.
Po pierwsze, zezwalaj na połączenia przychodzące do serwera X. Otwórz okno terminala w X Windows na serwerze. (Musisz mieć do tego dostęp, w przeciwnym razie nie możesz tego zrobić.)
Wydaj następujące polecenie:
xhost +
Powinien powiedzieć „połączenia dozwolone ze wszystkich hostów” lub coś w tym celu.
Następnie, pozostając w X Windows, problem:
echo $DISPLAY
Spowoduje to wyświetlenie identyfikatora wyświetlacza. Zapisz to lub zapamiętaj. Zazwyczaj będzie to „: 0” lub „: 0.0”, ale nie martw się, jeśli jest inaczej.
To wszystko, co musisz zrobić z poziomu samego systemu Windows X.
Teraz SSH na serwerze z dowolnego miejsca. Wydaj polecenie:
export DISPLAY=[what-the-echo-command-gave-you]
I to powinno być to! Teraz powinieneś być w stanie uruchomić dowolne okna X z tej powłoki SSH i pojawi się na lokalnym serwerze X Windows.
Mam nadzieję, że to pomoże!
xhost +
to bardzo zły pomysł. Jeśli twój użytkownik uruchomił Xserver, powinieneś już mieć odpowiedni plik Xauthority, nie musisz się bawić z serwerem acls.xhost +
? Jakie ryzyko podejmuję (musiałem się zalogować)?xhost +
wyłącza całą kontrolę dostępu do serwera x. Każdy, kto może połączyć się z serwerem X, może podglądać zdarzenia, wprowadzać zdarzenia, zrzucać zawartość okna, zabijać programy działające na serwerze X itd. Możliwości te można wykorzystać jako odmowę usługi, wykonanie dowolnego programu lub inne złe rzeczy. Widzieć www2.slac.stanford.edu/computing/security/xwindow więcej informacji na ten temat. To, co powinieneś zrobić w większości konfiguracji, jest uruchomioneecho $XAUTHORITY
zamiast. Jeśli nie jest pusty, to kiedy chcesz uruchomić program GUIexport XAUTHORITY=<saved content of $XAUTHORITY>
.gimme-xauth.sh
w twoim / usr / bin dla przyjemności i Xstasy. pastebin.com/GXx2hwC5Musisz przekazać X11 na lokalną maszynę (ze zdalnego komputera). Podaj
-X
lub-Y
flagi podczas wywoływania ssh.źródło
To, na czym wyświetla się aplikacja, jest podyktowane przez
DISPLAY
Zmienna środowiskowa. robićexport DISPLAY=:0.0
aby pojawił się na pierwszym ekranie zdalnego urządzenia.źródło
Po pierwsze, nie jest to pytanie programistyczne (s / b serverfault.com)
Jednak musisz uruchomić serwer X w swoim systemie (na przykład XMing), a następnie uruchomić program GUI na linuxowym polu, to spowoduje umieszczenie GUI na twoim komputerze.
źródło
FYI, możesz zrobić coś takiego w dziedzinie Windows, na przykład uruchamiając proces UNIX, używając WinSSHD i / lub Tunelier .
Jeśli masz na myśli uruchomienie gui w lokalnej sesji systemu Windows X, musisz ustawić zmienną DISPLAY na lokalną (tunnelier może mieć odpowiednie ustawienie), a ponieważ w systemie Windows musisz połączyć to z uruchomieniem emulatora x-window w oknach (takich jak cygwin-X )
źródło
Najłatwiej jest to zrobić za pomocą multipleksera terminala, takiego jak
screen
lubtmux
. To nie wymaga żadnych kłopotówxhost
. kopiowanie i wklejanie autoryzacji lub coś takiego.Podstawowa idea:
screen
lubtmux
sesja. (Oznacza to klikanie w VNC, ale jest to jedyny moment, w którym musisz to zrobić.)screen
lubtmux
sesja.Przykład ekranu GNU:
W wirtualnym terminalu urządzenia zdalnego (otwieranego przez VNC lub fizycznie):
Następnie, kiedy włączysz SSH, możesz po prostu dołączyć do tej sesji:
A potem z poziomu sesji ekranu uruchom dowolne aplikacje, które chcesz:
źródło