Czy SSH używa jakiejkolwiek kompresji?

44

Jestem ciekawy, czy SSH kompresuje swoje dane przed wysłaniem / otrzymaniem? Jeśli nie jest domyślnie, to czy można go włączyć?

Ivan
źródło

Odpowiedzi:

48

Nie i tak. Rodzaj. Oznacza to, że obsługuje kompresję (o ile pamiętam, zlib lub zlib-ish), ale standardowa kopia OpenSSH nie ma domyślnie włączonej, choć niektóre dystrybucje mogą ją domyślnie włączać (nie sądzę, że Ubuntu to robi ).

Zobacz man ssh_configszczegóły. Szukasz opcji Compressioni CompressionLevel, które możesz następnie ustawić /etc/ssh/ssh_config.

Zauważ, że istnieje również Compressionopcja po stronie serwera, sshd_configktóra określa, czy kompresja jest dozwolona (jest to domyślnie). Ponownie zobacz man sshd_configszczegóły.

Możesz także włączyć kompresję dla poszczególnych sesji, używając opcji wiersza poleceń -C.

Pamiętaj, że kompresja może mieć nieco negatywny wpływ na wydajność, jeśli połączenie między tobą a serwerem jest szybkie (np. W tej samej sieci LAN lub tylko na naprawdę dobrych połączeniach internetowych) lub jedna lub obie strony mają wolny procesor (kompresja zjada dość dużo czasu procesora).

W dzisiejszych czasach dla większości osób sugeruję używanie go tylko w razie potrzeby. Zwykle dla łączy mniejszych niż 5-10 Mb / s i tylko przy przekazywaniu dużej ilości danych masowych (transfery plików jeszcze nieskompresowanych, przekazywanie X11 lub VNC, takie rzeczy).

Nicholas Knight
źródło
1
Właściwie chcę spróbować użyć go do przyspieszenia działania aplikacji X przez SSH. Mój serwer ma dużo wolnych zasobów procesora i pamięci RAM, a klient nie jest zbyt słaby.
Ivan
2
Kompresja w sshd_config może być „tak” lub „opóźniona”. „opóźniony” jest bezpieczniejszy, ponieważ luka w zlib cię nie ujawnia, więc jest domyślna, ale niektórzy starzy klienci, tacy jak Tunnelier, obsługują tylko „tak”. openssh.com/txt/release-4.2
endolit
Compressionmoże być yesalbo nostrona podręcznika mówi ... Dzięki w każdym razie, musiałem go zdekompresować dla mojego telefonu z Androidem ...
Wilf
@Ivan Czy próbowałeś NoMachine NX lub Freenx? To powinno być szybsze niż zwykłe ssh.
gmatht
Zauważ, że CompressionLevelbyła to opcja dostępna tylko dla protokołu SSH 1, który nie jest już domyślnie włączony w bieżących wersjach OpenSSH.
ckujau
23

Możesz włączyć kompresję gzip na dowolnym SSH. Włóż Compression yesdo swojego ~/.ssh/configi powinno działać. Alternatywnie spróbuj uruchomić sshz -Copcją.

evgeny
źródło
8

Na stronie podręcznika ssh (wpisz, man sshaby zobaczyć całość):

 -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.

Więc po prostu zmień:

ssh hostname

do:

ssh -C hostname
rjmunro
źródło
2
Możesz włączyć tę opcję w PuTTY, jeśli korzystasz z systemu Windows: Połączenie -> SSH -> Opcje protokołu -> Włącz kompresję.
Wug
0

możesz włączyć kompresję za pomocą, -Cale to nie zadziała, jeśli serwer nie będzie mógł wydać na to mocy jądra, nie pozwalając na kompresję. Na przykład zmieniłem lokalizację hosta niektórych własnych danych ze Strato na mój serwer. Rozpoznałem to ze względu na użycie powolnego pobierania 2Mbit i przesyłania 0,3Mbit i sprawdziłem różnicę prędkości w zależności od poziomu kompresji, ponieważ wyższy poziom nie zawsze jest szybszy, ponieważ zużywa moc procesora lub serwer.
ale w moim przypadku wykonuje dobrą robotę, ponieważ skraca potrzebny czas do szóstej wcześniej.

Andreas Bartels
źródło
Zawsze sprawdzam w momencie uruchamiania sieci, czy kompresja Settet nabiera prędkości, wykonując szybki transfer w obu opcjach i sprawdzając czas. Wynikowa odpowiedź to automatyczna konfiguracja kompresji czy nie. Ponieważ nie muszę cały czas sprawdzać połączenia przed przesłaniem czegoś, ponieważ jest ono zawsze lepiej dostosowane.
Andreas Bartels,
0

Najprościej jest użyć opcji -o na cli. Może być używany z dowolną opcją konfiguracji, np

ssh -o "Compression no" -v <HOST>
# or
ssh -o "Compression yes" -v <HOST>
krad
źródło