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 startx
dostaję ... 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
:
EDYCJA 2:
Ta odpowiedź mówi, że startx
jest 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ę?
Odpowiedzi:
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:
„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:
Osobiście nie uważam za użyteczne rozpoczęcie
lxsession
, uruchamianie aplikacji X na konsoli jest dla mnie znacznie łatwiejsze.źródło
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:
Biorąc pod uwagę, że Raspbian Buster zawiera
X11Forwarding yes
w/etc/ssh/sshd_config
Twoje 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.
Pobierz i uruchom
setup-x86_64.exe
ze strony Cygwin .Do „Lokalnego katalogu pakietów” Cygwina można użyć
C:\Users\me\AppData\Roaming\Cygwin
.Wybierz najbliższy serwer do pobierania pakietów.
Ustaw „Widok” na „Pełny” i wyszukaj
xinit
.W kolumnie „Nowy” użyj menu rozwijanego, aby zmienić wartość z „Pomiń” na
xinit
najnowszą wersję:openssh
ten sam sposób.Połącz się z Raspberry Pi z Windows
Cygwin-X → XWin Server
. To nie otworzy żadnych okien, ale na pasku zadań powinieneś zobaczyć dwie nowe ikony:Uruchom terminal Cygwin:
Cygwin → Cygwin64 Terminal
Ustaw
DISPLAY
zmienną środowiskową, w której działa serwer X w systemie Windows:export DISPLAY=:0.0
Połącz się ze swoim Raspberry Pi za pomocą X11:
ssh -Y pi@raspberrypi
W sesji SSH możesz teraz uruchomić aplikację X na Raspberry Pi, taką jak Thonny :
Alternatywnie, jak wspomniano w komentarzu do pytania user1297, możesz uruchomić,
x-session-manager
aby emulować wrażenia, które można uzyskać, łącząc się z Raspberry Pi przez HDMI na monitorze zewnętrznym:Jeśli chcesz uruchomić aplikację bezpośrednio bez wpisywania jej nazwy w powłoce, użyj tego:
Na macOS
XQuartz zapewnia serwer X dla macOS.
Zainstaluj XQuartz, wyloguj się i zaloguj ponownie (aby nowa wartość była
DISPLAY
skuteczna), a następnie uruchom aplikacje z SSH z Bash:źródło
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
DISPLAY
zmiennej środowiskowej. Zwykle, jeśli serwer X i aplikacja działają na tym samym komputerze, DISPLAY określi tylko numer serwera (np.:0
Jeś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
DISPLAY
zmiennej. Na przykładexport 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
xhost
polecenie 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ę,xhost
jeś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
-Y
parametru podczas łączenia się z nim (npslogin -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,xhost
ponieważ (jeśli chodzi o twój serwer X) połączenia są inicjowane lokalnie (od strony początkowej tunelu SSH).źródło