Konfigurujesz przekazywanie X11 przez SSH w podsystemie Windows 10 dla systemu Linux?

7

Mam Raspberry Pi 3 Model B + podłączony do mojej sieci lokalnej i mogę bez problemu SSH. Powoduje to jednak pewne problemy, ponieważ wszystko odbywa się w wierszu polecenia.

To, co naprawdę chciałbym zrobić, to przekazywanie X11 za pomocą klienta SSH dostarczanego z Windows Subsystem dla Linux. Korzystam z systemu Windows 10 Pro z zainstalowaną aktualizacją 1803.

Jestem tylko ciekawy, jak mogę skorzystać z tej funkcji? Jeśli nie będzie działać natywnie w systemie Windows 10, zawsze mogę uruchomić maszynę wirtualną z systemem Linux, aby połączyć się z Raspberry Pi.

Cromulent
źródło
Zobacz także to rozwiązanie wykorzystujące Cygwin.
Matthias Braun

Odpowiedzi:

7

Jest to zdecydowanie możliwe, biorąc pod uwagę obecną konfigurację. Zauważ, że masz również opcję użycia Putty, ale tak czy inaczej, musisz mieć serwer X działający na komputerze klienckim, twój Podsystem Windows dla Linux - WSL . Model klient-serwer systemu X Window jest częściowo tym, co sprawia, że ​​przekazywanie X jest tak łatwe do ściągnięcia. Wszystko czego potrzebujesz to serwer X działający na hoście i kliencie.

Konfiguracja Raspberry Pi (hosta)

Po pierwsze, będziesz chciał dokonać niewielkiej korekty konfiguracji serwera SSH na maszynie hosta (Raspberry Pi). Najpierw znajdź plik sshd_config w katalogu etc. Możesz uruchomić te polecenia, ssh-sing do Raspberry Pi (z kontem obsługującym sudo) lub bezpośrednio uzyskując dostęp do Pi, a następnie otwierając terminal.

Po wejściu uruchom polecenie:

cd /etc/ssh

Wykonaj kopię zapasową pliku konfiguracyjnego sshd:

cp sshd_config sshd_config.ORIG

Teraz otwórz oryginalny plik w edytorze tekstu za pomocą:

sudo nano sshd_config

Możesz wybrać dowolny edytor tekstowy, w którym czujesz się komfortowo ( zobacz tutaj skróty edytora tekstów nano). To jest główny plik konfiguracyjny dla serwera ssh. Znajdź i odkomentuj następujące linie:

X11Forwarding yes
X11UseForwarding yes

Zapisz i wyjdź. Teraz musisz zrestartować serwer SSH Pi za pomocą:

sudo systemctl restart sshd

Konfiguracja systemu Windows (klienta)

Skończyłeś z gospodarzem. Teraz wszystko, co musisz zrobić, to zainstalować serwer X dla systemu Windows. Istnieje kilka opcji do wyboru, ale wybrałbym Cygwin X, który możesz pobrać tutaj . Zainstaluj i po uruchomieniu powinien odrodzić się małe okno na twoim kliencie, które będzie użyte do wyświetlenia programu X. Możesz teraz przetestować, czy następuje przekazywanie X, powracając do powłoki WSL i uruchamiając proste polecenie:

xclock

Prosty zegar powinien pojawić się w oknie odradzanym przez Cygwina. Możesz zakończyć zegar, wracając do powłoki WSL i naciskając Ctrl + C. Jeśli to polecenie nie zostanie rozpoznane, może być konieczne najpierw zainstalowanie aplikacji graficznych x11 na komputerze-hoście za pomocą:

sudo apt-get install x11-apps

Przekazywanie X powinno być teraz włączone i możesz teraz uruchomić większość, jeśli nie wszystkie aplikacje Raspberry Pi z systemu Windows.


Uwaga dotycząca XDMCP, FreeNX

Możesz posunąć się o krok dalej i skonfigurować, aby uruchamiać całe środowisko pulpitu z poziomu Pi, a nie tylko aplikacja po aplikacji, na co pozwala przekazywanie X. Oto kilka typowych dostępnych opcji:

  • XDMCP: Jest to najłatwiejszy do skonfigurowania, ale jest wyjątkowo niepewny, a większość organów zaleca tylko, aby kiedykolwiek uruchomić go w zaufanej przewodowej sieci LAN (takiej jak sieć domowa). Może to być więcej kłopotów niż jest to warte, ale jeśli jesteś ciekawy, zajrzyj do tego wątku Rasp Pi dla początkowej konfiguracji .
  • FreeNX: Bardziej bezpieczny niż XDMCP i prawdopodobnie warto poświęcić czas na konfigurację, jeśli chcesz to robić regularnie, a być może z innej sieci całkowicie. Musisz zainstalować serwer FreeNX na hoście, a następnie użyć innego oprogramowania - NoMachine - na swoim kliencie Windows. Zobacz tutaj bardzo szczegółowy przewodnik.
baelx
źródło
Dzięki za odpowiedź! Czy mógłbyś określić, jaką powłokę miałeś na myśli w „Możesz teraz przetestować, że przekazywanie X odbywa się, powracając do swojej powłoki WSL”? Czy to na przykład Bash w Ubuntu w systemie Windows?
Matthias Braun
2

W powłoce WSL upewnij się, że wyeksportowałeś w pełni kwalifikowany WYŚWIETLACZ

eksport WYŚWIETLACZ = host lokalny: 0,0

Następujące funkcje nie działają: eksportuj WYŚWIETLACZ =: 0,0

: 0.0 opiera się na gnieździe domeny UNIX (zamiast gniazda TCP / IP) i w jakiś sposób przekazywanie X nie jest poprawnie podłączone. Miałem ten sam problem.

Carl Zmola
źródło