Verwendet SSH Komprimierung?

44

Ich bin neugierig, komprimiert SSH seine Daten, bevor es sie sendet / empfängt? Wenn dies nicht der Fall ist, kann es dann aktiviert werden?

Ivan
quelle

Antworten:

48

Nein und Ja. So'ne Art. Das heißt, es unterstützt Komprimierung (zlib oder zlib-ish, wie ich mich erinnere), aber für eine Standardkopie von OpenSSH ist es nicht standardmäßig aktiviert, obwohl einige Distributionen es möglicherweise standardmäßig aktivieren (ich glaube nicht, dass Ubuntu dies tut) ).

Siehe man ssh_configfür weitere Einzelheiten. Sie suchen die Optionen Compressionund CompressionLevel, die Sie dann einstellen können /etc/ssh/ssh_config.

Beachten Sie, dass es auch eine CompressionOption für die Serverseite gibt, mit sshd_configder festgelegt wird, ob die Komprimierung zulässig ist (dies ist standardmäßig der Fall). Siehe auch hier man sshd_configfür Details.

Sie können die Komprimierung auch sitzungsweise aktivieren, indem Sie die Befehlszeilenoption verwenden -C.

Beachten Sie, dass die Komprimierung eine geringfügig negative Auswirkung auf die Leistung haben kann, wenn die Verbindung zwischen Ihnen und dem Server schnell ist (z. B. im selben LAN oder nur bei wirklich guten Internetverbindungen) oder wenn eine oder beide Seiten eine langsame CPU haben (die Komprimierung nimmt ein gutes Stück ab) CPU-Zeit).

Heutzutage würde ich den meisten Menschen empfehlen, es nur nach Bedarf zu verwenden. In der Regel für Verbindungen mit weniger als 5 bis 10 MBit / s und nur bei der Weitergabe vieler Massendaten (Übertragung von nicht bereits komprimierten Dateien, X11- oder VNC-Weiterleitung usw.).

Nicholas Knight
quelle
1
Eigentlich möchte ich versuchen, es zu verwenden, um das Ausführen von X-Anwendungen über SSH zu beschleunigen. Mein Server hat viele freie CPU- und RAM-Ressourcen und der Client ist auch nicht zu schwach.
Ivan
2
Die Komprimierung in sshd_config kann entweder "yes" oder "delayed" sein. "delayed" ist sicherer, da Sie durch eine zlib-Schwachstelle nicht gefährdet werden. Dies ist die Standardeinstellung, aber einige alte Clients wie Tunnelier unterstützen nur "yes". openssh.com/txt/release-4.2
endolith
Compressionkann entweder sein yesoder nodie Manpage sagt ... Trotzdem danke, musste es für mein Android-Handy dekomprimieren ...
Wilf
@Ivan Hast du NoMachine NX oder freenx ausprobiert? Das sollte schneller sein als nur ssh zu komprimieren.
Gmatht
Beachten Sie, dass dies CompressionLeveleine Option war, die nur für das SSH-Protokoll 1 verfügbar war, das in aktuellen Versionen von OpenSSH nicht mehr standardmäßig aktiviert ist .
ckujau
23

Sie können die gzip-Komprimierung auf jedem SSH aktivieren. Setzen Sie Compression yesin Ihre ~/.ssh/config, und es sollte funktionieren. Alternativ können Sie auch versuchen, sshmit der -COption zu starten.

evgeny
quelle
8

Von der SSH-Manpage (tippe man ssh, um das Ganze zu sehen):

 -C      Requests compression of all data (including stdin, stdout,
         stderr, and data for forwarded X11 and TCP connections).  The
         compression algorithm is the same used by gzip(1), and the
         “level” can be controlled by the CompressionLevel option for pro-
         tocol version 1.  Compression is desirable on modem lines and
         other slow connections, but will only slow down things on fast
         networks.  The default value can be set on a host-by-host basis
         in the configuration files; see the Compression option.

Also einfach ändern:

ssh hostname

zu:

ssh -C hostname
rjmunro
quelle
2
Sie können diese Option in PuTTY aktivieren, wenn Sie Windows verwenden: Verbindung -> SSH -> Protokolloptionen -> Komprimierung aktivieren.
Wug
0

Sie können die Komprimierung mit einschalten, -Caber es funktioniert nicht, wenn der Server keine Kernel-Energie dafür aufwenden darf, indem er die Komprimierung dafür nicht zulässt. Zum Beispiel habe ich aus diesem Grund den Host-Speicherort einiger eigener Daten von Strato auf einen Server von mir geändert. Ich erkannte es an der Verwendung einer langsamen 2-Mbit-Download- und 0,3-Mbit-Upload-Verbindung und überprüfte den Geschwindigkeitsunterschied abhängig von der Komprimierungsstufe, da höhere Stufen nicht immer schneller sind, da sie die Prozessorleistung oder die Serverleistung beeinträchtigen.
aber in meinem Fall macht es einen guten Job, da es die benötigte Zeit auf ein Sechstel der Zeit davor verkürzt.

Andreas Bartels
quelle
Ich überprüfe im Moment immer beim Starten des Netzwerks, ob die Settet-Komprimierung an Geschwindigkeit gewinnt, indem ich in beiden Optionen eine schnelle Übertragung durchführe und die Zeit überprüfe. Die daraus resultierende Antwort ist, ob die Komprimierung automatisch eingerichtet wird oder nicht. Seitdem muss ich meine Verbindung nicht mehr die ganze Zeit überprüfen, bevor ich etwas übertrage, da sie immer besser eingestellt ist.
Andreas Bartels
0

Am einfachsten ist es, die Option -o auf dem CLI zu verwenden. Es kann auch mit jeder Konfigurationsoption verwendet werden, z

ssh -o "Compression no" -v <HOST>
# or
ssh -o "Compression yes" -v <HOST>
krad
quelle