Unterschiede zwischen VNC und ssh -X

27

Warum würden Sie VNC (oder was das betrifft NX) statt nur mit ssh -X (-Y). Ich habe gelesen, dass VNC weniger Bandbreite benötigt, aber gibt es weitere Unterschiede / Vorteile mit dem jeweiligen Tool?

Der stille Bootsmann
quelle

Antworten:

30

Abgesehen von Bandbreiten- und Latenzproblemen (die sich geringfügig unterscheiden können) liegen die großen Unterschiede in den bereitgestellten Funktionen.

VNC exportiert eine ganze Sitzung, den Desktop und alles, während ssh ein einzelnes Programm ausführt und dessen Fenster auf Ihrer Workstation anzeigt.

Der VNC-Server exportiert eine Sitzung, die auch nach dem Trennen des Bildschirms überlebt, und Sie können später bei geöffneten Fenstern usw. erneut eine Verbindung herstellen. Dies ist bei einem ssh X-Tunnel nicht möglich, da die Fenster nach dem Tod Ihres X-Servers ausgeblendet werden .

dkagedal
quelle
5
Das ist der Hauptgrund, warum ich immer VNC benutze, niemals direktes X-Fenster. (Ich benutze VNC über einen SSH-Tunnel). Wenn ich den Deckel meines Laptops schließe, ist die Verbindung unterbrochen. Mit ssh -X gibt es keine Möglichkeit, den Vorgang fortzusetzen - ich muss die Anwendung von Anfang an neu starten. Mit VNC (sowohl direkt als auch über einen SSH-Tunnel) kann ich mich wieder verbinden und dort weitermachen, wo ich aufgehört habe.
David Cary
8
Obwohl ein bisschen OT (da es sich bei diesem Q vermutlich nur um GUI-Apps handelt): Wenn eine tatsächliche GUI-App nicht erforderlich ist und nur der einfache Shell-Zugriff (z. B. xterm) ausreicht, wird "ssh" gefolgt von "screen bash" ausgeführt. Wenn die Verbindung getrennt wird (Laptop geschlossen, VPN getrennt usw.), bleibt die Remote-Shell aktiv. Erneut anmelden und erneut über "screen -r" verbinden. Ich erwähne dies nur, weil ich gesehen habe, wie Leute vnc nur für den einfachen Shell-Zugriff (oder einen lokal angezeigten entfernten xterm) ausführen. Meistens (aber natürlich nicht immer) reicht ein einfacher Shell-Zugriff aus.
Michael
1
@michael_n Ich bin an dieser Sache interessiert, die Sie über Screen Bash sagen, aber ich bin nicht in der Lage, sie zum Laufen zu bringen. Ich habe 'ssh -X -t meinbenutzername @ remotehost screen bash' eingegeben und nachdem die Verbindung getrennt wurde, tippe ich 'screen -r' ein, aber es steht 'es gibt keinen Bildschirm, der fortgesetzt werden kann'. was sollte ich tun?
Simona
2
@simona nach der erfolgreichen SSH - Login, dann Bildschirm laufen: ssh user@host; und nach der Anmeldung: screen bash; trennen, ctrl+agefolgt von ctrl+d. Sie können sich abmelden und erneut anmelden, dann: screen -lsund screen -r. Durch Beenden von bash wird die Bildschirmsitzung beendet. Weitere (viel mehr) finden Sie in verschiedenen Tutorials auf dem GNU-Bildschirm
michael
9

ssh -Xleitet X11-Befehle an Ihren lokalen X-Server weiter. Es ist also so, als würden Sie das Programm lokal ausführen, wenn es tatsächlich auf dem Computer am anderen Ende ausgeführt wird. Es ist sehr langsam, weil es viel Bandbreite verbraucht. (Dies ist, worüber die Leute reden, wenn sie sagen, X11 sei "netzwerktransparent".)

Mit VNC und anderen Remotedesktop-Apps kann der andere Computer die gesamte Grafikzeichnung usw. verarbeiten und im Wesentlichen einen Screenshot erfassen und an Ihren Computer zurücksenden. Es kann viel schneller erscheinen, da weit weniger Informationen erforderlich sind, um alles anzuzeigen. Es wird jedoch nicht nur eine einzelne Anwendung, sondern der gesamte Desktop gesendet.

Ich empfehle die Verwendung ssh -Xüber das Internet aus einem einfachen Grund nicht: Es wird die gesamte verfügbare Bandbreite verwendet. Meiner Meinung nach ist dies über ein LAN ziemlich nützlich. Wenn Sie also nur eine Anwendung benötigen und nicht einen ganzen Desktop ausführen müssen, ist dies ein guter Weg. Andernfalls verwenden Sie einfach VNC.

greyfade
quelle
3
"Es ist sehr langsam, weil es viel Bandbreite verbraucht. Das X11-Protokoll ist sehr komplex und erfordert häufig das Hin- und Herschicken großer Pixelkarten über die Verbindung." - das ist falsch, das X11-Protokoll ist nicht sehr komplex und es werden keine großen Pixmaps über die Verbindung hin und her gesendet. Schließen
1
@Sherlock: Nun, die Tatsache bleibt, dass es viel Bandbreite verbraucht. Ich habe den beleidigenden Satz gestrichen.
greyfade
1
NX ist eine effiziente Möglichkeit, X11-Protokolldaten über das Netzwerk zu übertragen. Es komprimiert die Daten, bietet umfangreiche Caching- und Tunnelsitzungen über SSH.
Adam Byrtek
4

VNC gibt einen gesamten Desktop von einem Remote-System frei. Es erfordert einen vollwertigen Desktop auf dem Remote-System.

Mit ssh -X können Sie eine einzelne X-Anwendung von einem Remote-Server ausführen. Auf dem Remote-System muss kein vollständiger Desktop ausgeführt werden, und häufig müssen nur eine Handvoll Pakete auf dem Remote-System installiert werden.

ssh -Xkann nützlich sein, wenn komplexe Softwarepakete über eine Remoteverbindung installiert werden. Einige Softwareprodukte verwenden möglicherweise ein GUI-Installationsprogramm (Oracle-Datenbank usw.). Ich möchte keinen vollwertigen Gnome-Desktop auf meinem Remote-Server installieren. Sie installieren also ein oder zwei X11-Pakete (Xauth?) Auf dem Remote-Server und erlauben dem DBA, das Oracle-Installationsprogramm remote mit etwas Einfachem wie 'ssh -X / media / cdrom / oracle-installer' auszuführen.

Stefan Lasiewski
quelle