Byłoby wspaniale móc x tunelować nad ssh; dlaczego zamiast tego trzeba używać XQuartz (itp.)?
Byłoby wspaniale móc x tunelować nad ssh; dlaczego zamiast tego trzeba używać XQuartz (itp.)?
Odpowiedzi:
Prosta odpowiedź brzmi: Terminal jest emulatorem terminala - to nie jest serwer X11. Istnieje, aby zapewnić punkt końcowy komunikacji tekstowej między komputerem Mac i innymi komputerami.
Terminal nie jest już więcej X11 serwer niż gnome-terminal w systemie Linux to lub cmd w systemie Windows. Oznacza to, że nie jest to wcale serwer X11. Musisz mieć serwer X11 na swojej lokalnej maszynie, aby mieć tunelowane, graficzne aplikacje X11 rysujące swoje interfejsy użytkownika na komputerze Mac. W rzeczywistości nie różni się to dla Maca od Linuksa, po prostu Linux domyślnie zawsze uruchamia serwer X11 do rysowania pulpitu, więc jest on obsługiwany trochę lepiej niż na Macu. Wystarczy otworzyć uprawnienia serwera X11, a tunelowanie ssh i przekierowanie X11 na pulpicie systemu Linux wydają się działać.
The Serwer XQuartz uruchamiasz na OS X po prostu dostajesz brakujący serwer X11, którego potrzebujesz na sesji OS X, aby umożliwić rysowanie przekazanych poleceń interfejsu użytkownika na pulpicie OS X. To nie jest coś, co aplikacja Terminal kiedykolwiek wykonałaby, lub kiedykolwiek powinna, wdrożyć. To nie jest część bycia Terminalem. To całkowicie oddzielna rzecz.
Chcę również zająć się tym, co powiedziałeś w swoim pytaniu:
Byłoby wspaniale móc x tunelować nad ssh
Zakładam, że masz na myśli „byłoby wspaniale wykonać X11 przekierowanie z sesji ssh uruchomionej w Terminal.app do mojego działającego serwera XQuartz”. Możesz to zrobić!
Kiedy używasz ssh w Terminal.app, po prostu dołącz -X
opcja włączenia przekazywania X, a komputer Mac automatycznie uruchomi XQuartz. Nie ma potrzeby korzystania z aplikacji terminalowej w XQuartz, która jest do bani.
Możesz także edytować ~/.ssh/config
i dodaj:
ForwardX11 yes
do tego pliku, aby domyślnie włączyć przekierowanie X dla wszystkich sesji ssh. Możesz nawet uruchamiać programy X na zdalnej maszynie w tle w taki sposób:
ssh username@remoteserver -f -X xeyes
To działa z Terminalu.