Przekazywanie X11 z Xming przez SSH?

11

Mam dostęp do SSH i mam zainstalowane Xming wraz z czcionkami Xming. Skonfigurowałem PuTTY do przekazywania x11 i powiedziałem, aby umieścił pulpit na localhost: 0, zgodnie z instrukcjami tutaj .

Jednak po zalogowaniu się i startxdostaję ... nic. Lub raczej uruchamia kilka komunikatów, które wydają się mówić, że wszystko działa, ale w oknie konsoli pojawia się kursor, który działa tak, jakby był w stanie oczekiwania. I to wszystko.

czego mi brakuje? Czy muszę coś otworzyć, aby zobaczyć pulpit?

Chcę przesłać mój pulpit na komputer, aby móc grać z RasPi podczas lunchu bez fizycznego podłączania sprzętu. Proszę pomóż.

EDYTOWAĆ:

Zrzut ekranu z działaniem Xminga, włączam SSH i dzwonię startx:

SSH z odpowiedzią Xming

EDYCJA 2:

Ta odpowiedź mówi, że startxjest niepotrzebna, ponieważ uruchamia serwer RasPi X, a ja korzystam z serwera Xming w systemie Windows. W takim przypadku, jak przejść do pulpitu / GUI na Xming z Windows? Ponieważ nawet przy działającym Xming i włączonym SSH, nie otrzymuję nic poza zwykłym monitem konsoli. Może robię to źle. Chcę mieć mój pełny, normalny interfejs GUI RasPi działający w oknie na moim zdalnym komputerze z systemem Windows. Nie chcę używać VNC. Przesyłam dalej przez Internet. Jak się tam dostanę?

zenbike
źródło
2
Chciałem również uruchomić sesję graficzną z mojego Raspberry na moim komputerze z systemem Windows. A kiedy zobaczyłem twój komunikat mówiący, że startx oznacza uruchomienie serwera X, zrozumiałem, że muszę uruchomić program X ... Zacznijmy więc ... menedżera sesji x! w ten sposób masz sesję graficzną na swoim odległym komputerze. dzięki, dałeś mi drogę!

Odpowiedzi:

15

Jeśli uruchomisz Xming na komputerze z systemem Windows, masz już uruchomiony serwer X. Nie musisz uruchamiać serwera X swojego Raspberry Pi przy użyciu startx. Twoje aplikacje X będą działały na Raspberry Pi, ale aplikacja będzie korzystać z serwera Windows Xming X.

Dokumentacja, którą podłączyłeś , stwierdza, że ​​musisz uruchomić serwer X w systemie Windows i nie wspomina, że ​​musisz uruchomić serwer X w systemie Linux. W ostatnim zdaniu dokumentacji:

Teraz powinno być możliwe uruchamianie aplikacji X z hosta na pulpicie lokalnym

„Aplikacje X” nie dotyczą serwera X (który powinien zostać uruchomiony startx), ale aplikacje takie jak xclock, xeyes i tak dalej.

Jedną specjalną aplikacją X jest lxsession, który uruchomi standardowy menedżer sesji LXDE (przynajmniej na moim Raspbian). Uruchomienie tej aplikacji na konsoli da ci „pełny GUI”, którego szukasz:

lxsession

Osobiście nie uważam za użyteczne rozpoczęcie lxsession, uruchamianie aplikacji X na konsoli jest dla mnie znacznie łatwiejsze.

asalamon74
źródło
1
Ok. Myślę, że to rozumiem. Mówisz, że startx jest niepotrzebny, ponieważ uruchamia serwer RasPi x, a ja używam serwera Xming w systemie Windows. W takim przypadku, jak dostać się do pulpitu / GUI na Xming z Windows. Ponieważ nawet przy działającym Xming i włączonym SSH, nie otrzymuję nic poza zwykłym monitem konsoli. Mówisz, że uruchomiłbym tylko rzeczywistą aplikację w Xming, a nie pełny GUI. Może robię to źle. To, czego chcę, to mój pełny, normalny GUI RasPi działający w oknie na moim zdalnym komputerze z systemem Windows. Nie chcę używać VNC. Przesyłam dalej przez Internet.
zenbike,
Zaktualizowałem odpowiedź.
asalamon74,
Działa idealnie, jeśli (zgodnie z oczekiwaniami) nieco wolno reaguje. Dziękuję za pomoc
zenbike,
1
… I to jest powód, dla którego Twój przewodnik zaleca uruchamianie pojedynczych aplikacji przez SSH naraz…
Alexander - Przywróć Monikę
1
@ asalamon74 Thanks! Łał! to jest po prostu bzdura. Nie muszę radzić sobie z klawiaturą i myszą podłączoną do USB za pomocą niesamowicie krótkiego drutu. Siedziałem przed telewizorem z powyższą konfiguracją. TERAZ? Po prostu ssh i prowadzę GUI jak szef !!
Dheeraj Bhaskar
1

Korzystanie z Cygwin / X

Jeśli nie jesteś związany z Xming, możesz zamiast tego użyć Cygwin / X do uruchamiania serwera X w systemie Windows.

Przygotowanie Raspberry Pi

Spróbuj ustanowić regularne połączenie SSH z systemu Windows do Raspberry Pi przy użyciu programu PowerShell:

Zaloguj się do Raspberry Pi w systemie Windows za pomocą PowerShell i SSH

Biorąc pod uwagę, że Raspbian Buster zawiera X11Forwarding yesw /etc/ssh/sshd_configTwoje Raspberry Pi powinny również być w stanie przekierować wyjście wizualną aplikacji X11 z serwerem X Windows.

Następny krok pokazuje, jak zainstalować ten serwer X.

Zainstaluj Cygwin / X w systemie Windows

Cygwin / X zapewnia serwer X dla Windows, który wyświetla aplikacje GUI działające na Raspberry Pi.

  1. Pobierz i uruchom setup-x86_64.exeze strony Cygwin .

  2. Do „Lokalnego katalogu pakietów” Cygwina można użyć C:\Users\me\AppData\Roaming\Cygwin.

  3. Wybierz najbliższy serwer do pobierania pakietów.

  4. Ustaw „Widok” na „Pełny” i wyszukaj xinit.

  5. W kolumnie „Nowy” użyj menu rozwijanego, aby zmienić wartość z „Pomiń” na xinitnajnowszą wersję:

Zainstaluj pakiet xinit z Cygwin

  1. Zainstaluj pakiet w opensshten sam sposób.

Połącz się z Raspberry Pi z Windows

  1. Uruchomić serwer X za pomocą menu Start systemu Windows' Cygwin-X → XWin Server. To nie otworzy żadnych okien, ale na pasku zadań powinieneś zobaczyć dwie nowe ikony:

Ikony serwera XWin w zasobniku systemowym

  1. Uruchom terminal Cygwin: Cygwin → Cygwin64 Terminal

  2. Ustaw DISPLAYzmienną środowiskową, w której działa serwer X w systemie Windows:

    export DISPLAY=:0.0

  3. Połącz się ze swoim Raspberry Pi za pomocą X11:

    ssh -Y pi@raspberrypi

Zaloguj się za pomocą Cygwin Terminal

W sesji SSH możesz teraz uruchomić aplikację X na Raspberry Pi, taką jak Thonny :

Thonny przekazał do systemu Windows

Alternatywnie, jak wspomniano w komentarzu do pytania user1297, możesz uruchomić, x-session-manageraby emulować wrażenia, które można uzyskać, łącząc się z Raspberry Pi przez HDMI na monitorze zewnętrznym:

Pulpit Rasbpian przewidziany dla systemu Windows

Jeśli chcesz uruchomić aplikację bezpośrednio bez wpisywania jej nazwy w powłoce, użyj tego:

ssh -Y pi@raspberrypi x-session-manager

Na macOS

XQuartz zapewnia serwer X dla macOS.

Zainstaluj XQuartz, wyloguj się i zaloguj ponownie (aby nowa wartość była DISPLAYskuteczna), a następnie uruchom aplikacje z SSH z Bash:

ssh -Y pi@raspberrypi thonny

Thonny wewnątrz macOS za pomocą XQuartz

Matthias Braun
źródło
1

Jeśli już korzystasz z serwera X w systemie Windows (podobnie jak w Xming), strona Windows jest w większości gotowa (ale zobacz kilka ważnych szczegółów poniżej). Kluczowym bitem pozostałym jest poinformowanie aplikacji X11 na pi, aby wysłały swoje dane X11 na komputer z systemem Windows.

Odbywa się to za pośrednictwem DISPLAYzmiennej środowiskowej. Zwykle, jeśli serwer X i aplikacja działają na tym samym komputerze, DISPLAY określi tylko numer serwera (np. :0Jeśli korzystasz tylko z jednego serwera X) lub może serwer i ekran (np :0.0.). Ponieważ nie ma adresu IP, oznacza to bibliotekę X aplikacji, że serwer jest lokalny i połączenia zostaną nawiązane odpowiednio (prawdopodobnie przez pewien rodzaj transportu pamięci współużytkowanej).

Aby nakazać aplikacji wysyłanie danych X11 do zdalnego węzła, podaj adres IP w DISPLAYzmiennej. Na przykład export DISPLAY=192.168.1.10:0. Dzięki temu wszystkie aplikacje X11 będą musiały otworzyć połączenie TCP z serwerem X nr 0 w węźle 192.168.1.10. Nazwy hostów DNS są w porządku, jeśli masz je w sieci.

Dwa potencjalne problemy

Jak napisałem w pierwszym akapicie, samo uruchomienie Xming może nie wystarczyć. Konieczna może być dodatkowa konfiguracja.

Po pierwsze, serwer X11 musi być skonfigurowany do akceptowania połączeń ze zdalnych węzłów przez TCP. Wiele obecnie dystrybuowanych serwerów X (nie wiem o Xming) akceptuje połączenia tylko z lokalnie działających aplikacji, chyba że wyraźnie je skonfigurujesz inaczej. Jest to funkcja bezpieczeństwa, ponieważ każde otwarte gniazdo jest potencjalnym wektorem do ataku.

Po drugie, serwer X11 utrzymuje bazę danych hostów / użytkowników, którzy mogą się łączyć. Musisz dodać do białej listy adres IP swojego Raspberry Pi. Możesz to zrobić, uruchamiając xhostpolecenie z Xming w systemie Windows, na przykład z konsoli uruchomionej w Xtermie. Możesz także wpisać, xhost +aby wyłączyć tę kontrolę bezpieczeństwa, ale jest to niebezpieczne, ponieważ pozwoli dowolnej aplikacji z dowolnego miejsca na świecie otwierać połączenia z wyświetlaczem. Jeśli znajdujesz się za zaporą sieci LAN, w której ufasz wszystkim (np. Własnemu domowi), jest to najłatwiejsze podejście, ale poświęć trochę czasu na odpowiednią konfigurację, xhostjeśli tak nie jest.

Alternatywny: ssh -Y

Korzystając z powyższego podejścia, wszystkie aplikacje X11 będą próbowały otwierać połączenia TCP z serwerem X. Te połączenia nie są bezpieczne. Ktoś w twoich pakietach szpiegujących LAN może je przechwycić.

Aby rozwiązać ten problem, zamiast ustawiać zmienną DISPLAY na Raspberry pi, użyj -Yparametru podczas łączenia się z nim (np slogin -Y hostname.). Parametr -Y (jak -X) utworzy tunel między węzłami do przenoszenia ruchu X11. Dzięki temu ruch X11 będzie szyfrowany i bezpieczny. Przydzieli również własną zmienną środowiskową DISPLAY, aby aplikacje mogły korzystać z tunelu. Może to również wyeliminować potrzebę bałaganu, xhostponieważ (jeśli chodzi o twój serwer X) połączenia są inicjowane lokalnie (od strony początkowej tunelu SSH).

David C.
źródło