Różnice między VNC i ssh -X

27

Dlaczego miałbyś używać VNC (lub w tym przypadku NX) zamiast po prostu używać ssh -X (-Y). Czytałem, że VNC używa mniejszej przepustowości, ale czy są jakieś inne różnice / zalety z danym narzędziem?

The Silent Boatman
źródło

Odpowiedzi:

30

Oprócz problemów z przepustowością i opóźnieniami (które mogą się nieco różnić), duże różnice dotyczą funkcji, które zapewnia.

VNC eksportuje całą sesję, pulpit i wszystko, podczas gdy ssh uruchomi pojedynczy program i pokaże jego okna na stacji roboczej.

Serwer VNC eksportuje sesję, która przetrwa nawet po odłączeniu ekranu, i możesz później połączyć się z nią ponownie przy wszystkich otwartych oknach itp. Nie jest to możliwe w przypadku tunelu ssh X, ponieważ gdy serwer X umiera, okna znikają .

dkagedal
źródło
5
To największy powód, dla którego zawsze używam VNC, nigdy bezpośredniego okna X. (Używam VNC w tunelu ssh). Kiedy zamykam pokrywę laptopa, połączenie jest zrywane. Z ssh -X nie ma możliwości wznowienia - muszę ponownie uruchomić aplikację od początku. Dzięki VNC (zarówno bezpośrednie, jak i przez tunel ssh) mogę ponownie połączyć się i kontynuować od razu tam, gdzie skończyłem.
David Cary,
8
Chociaż trochę OT (ponieważ to Q prawdopodobnie dotyczy tylko aplikacji GUI): jeśli rzeczywista aplikacja GUI nie jest wymagana, wystarczy tylko podstawowy dostęp do powłoki (np. Xterm), to wykonaj „ssh”, a następnie „screen bash”. Jeśli zostanie odłączony (laptop zamknięty, VPN odłączony itp.), Zdalna powłoka pozostaje aktywna. Zaloguj się ponownie i połącz ponownie za pomocą „screen -r”. Mówię o tym tylko dlatego, że widziałem, jak ludzie uruchamiają VNC tylko dla podstawowego dostępu do powłoki (lub uruchamiają zdalny Xterm wyświetlany lokalnie); przez większość czasu (ale oczywiście nie zawsze) wystarczy prosty dostęp do powłoki.
Michael
1
@michael_n Interesuje mnie to, co mówisz o bash ekranowym, ale nie jestem w stanie sprawić, by działało. Wpisałem „ssh -X -t moja nazwa_użytkownika @ bash ekranu zdalnego hosta”, a po zerwaniu połączenia wpisuję „screen -r”, ale mówi „nie ma ekranu, który można wznowić”. co powinienem zrobić?
simona
2
@simona po udanym logowaniu ssh, a następnie uruchomić ekran: ssh user@host; i po zalogowaniu: screen bash; rozłączyć, ctrl+aa następnie ctrl+d. Możesz się wylogować i zalogować ponownie, a następnie: screen -lsi screen -r. Wychodzenie z bash powoduje wyjście z sesji ekranowej. Aby uzyskać więcej (znacznie więcej), zobacz różne samouczki na ekranie GNU
Michał
9

ssh -Xprzekierowuje polecenia X11 na lokalny serwer X. To tak, jakbyś uruchamiał program lokalnie, kiedy naprawdę działa na komputerze na drugim końcu. Jest bardzo wolny, ponieważ używa dużej przepustowości. (O tym ludzie mówią, gdy X11 jest „transparentny dla sieci”).

Zamiast tego VNC i inne aplikacje do zdalnego pulpitu pozwalają drugiemu komputerowi przetwarzać wszystkie rysunki graficzne itp., Przechwytując zrzut ekranu i wysyłając go z powrotem do komputera. Może wydawać się znacznie szybszy, ponieważ do wyświetlenia wszystkiego potrzeba znacznie mniej informacji. Jednak wysyła również cały pulpit, a nie pojedynczą aplikację.

Nie polecam korzystania ssh -Xprzez Internet z jednego prostego powodu: To będzie używać wszystkich dostępnej przepustowości. Moim zdaniem jest dość przydatny w sieci LAN, więc jeśli potrzebujesz tylko jednej aplikacji i nie chcesz uruchamiać całego pulpitu, jest to dobra droga. W przeciwnym razie po prostu użyj VNC.

greyfade
źródło
3
„Jest bardzo wolny, ponieważ wykorzystuje dużą przepustowość. Protokół X11 jest bardzo złożony i często wiąże się z wysyłaniem dużych pixmap tam iz powrotem przez połączenie”. - to źle, protokół X11 nie jest zbyt skomplikowany i nie wymaga wysyłania dużych pixmap tam iz powrotem przez połączenie. Przyjdź i dołącz do tej propozycji, aby dowiedzieć się więcej o systemie X Window: area51.stackexchange.com/propations/20129/the-x-window-system
1
@Sherlock: Cóż, faktem jest, że używa dużej przepustowości. Usunąłem obraźliwe zdanie.
greyfade
1
NX to wydajny sposób przesyłania danych protokołu X11 przez sieć. Kompresuje dane, zapewnia obszerne sesje buforowania i tunelowania przez SSH.
Adam Byrtek,
4

VNC będzie dzielić cały pulpit ze zdalnego systemu. Wymaga pełnoprawnego pulpitu w systemie zdalnym.

ssh -X pozwala na uruchomienie pojedynczej aplikacji X ze zdalnego serwera. Zdalny system nie musi mieć uruchomionego pełnego pulpitu, a często potrzebujesz tylko kilku pakietów do zainstalowania w zdalnym systemie.

ssh -Xmoże być przydatny podczas instalowania złożonych pakietów oprogramowania za pośrednictwem połączenia zdalnego. Niektóre produkty mogą korzystać z instalatora GUI (baza danych Oracle itp.). Nie chcę instalować pełnoprawnego pulpitu Gnome na moim zdalnym serwerze. Tak więc instalujesz jeden lub dwa pakiety X11 (Xauth?) Na zdalnym serwerze i pozwalasz DBA na zdalne uruchomienie instalatora Oracle za pomocą czegoś tak prostego jak „ssh -X / media / cdrom / oracle-installer”.

Stefan Lasiewski
źródło