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ł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 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 (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, xhost
ponieważ (jeśli chodzi o twój serwer X) połączenia są inicjowane lokalnie (od strony początkowej tunelu SSH).