Apakah SSH menggunakan kompresi?

44

Saya ingin tahu, apakah SSH kompres datanya sebelum mengirim / menerimanya? Jika tidak secara default, maka bisakah dihidupkan?

Ivan
sumber

Jawaban:

48

Tidak dan ya. Agak. Yang mengatakan, ini mendukung kompresi (zlib atau zlib-ish, seingat saya), tetapi salinan stok OpenSSH tidak diaktifkan secara default, meskipun beberapa distribusi mungkin mengaktifkannya secara default (saya tidak berpikir Ubuntu tidak ).

Lihat man ssh_configdetailnya. Anda sedang mencari opsi Compressiondan CompressionLevel, yang kemudian dapat Anda atur /etc/ssh/ssh_config.

Perhatikan bahwa ada juga Compressionopsi untuk sisi server sshd_configyang menentukan apakah kompresi dibolehkan (ini secara default). Sekali lagi, lihat man sshd_configdetailnya.

Anda juga dapat mengaktifkan kompresi pada setiap sesi dengan menggunakan opsi baris perintah -C.

Perhatikan bahwa kompresi benar-benar dapat memiliki dampak kinerja yang sedikit negatif jika koneksi antara Anda dan server cepat (misalnya pada LAN yang sama atau hanya pada koneksi internet yang sangat baik) atau satu atau kedua belah pihak memiliki CPU yang lambat (kompresi makan sedikit adil) waktu CPU).

Hari ini, bagi kebanyakan orang, saya sarankan menggunakannya hanya sesuai kebutuhan. Biasanya untuk tautan yang kurang dari 5-10mbps dan hanya ketika melewati banyak data massal (transfer file yang belum dikompres, penerusan X11 atau VNC, hal-hal seperti itu).

Nicholas Knight
sumber
1
Sebenarnya saya ingin mencoba menggunakannya untuk mempercepat menjalankan aplikasi X melalui SSH. Server saya memiliki banyak sumber daya CPU dan RAM gratis dan klien juga tidak terlalu lemah.
Ivan
2
Kompresi di sshd_config dapat berupa "ya" atau "tertunda". "Tertunda" lebih aman, karena kerentanan zlib tidak mengekspos Anda, jadi itu adalah default, tetapi beberapa klien lama seperti Tunnelier hanya mendukung "ya". openssh.com/txt/release-4.2
endolith
Compressionbisa yesatau nohalaman manual mengatakan ... Terima kasih, diperlukan untuk membuka kompresi untuk ponsel Android saya ...
Wilf
@Ivan Sudahkah Anda mencoba NoMachine NX atau freenx? Itu harus lebih cepat dari sekadar komandan ssh.
gmatht
Perhatikan bahwa CompressionLevelitu adalah opsi yang hanya tersedia untuk protokol 1 SSH yang tidak lagi diaktifkan secara default dengan versi OpenSSH saat ini.
ckujau
23

Anda dapat mengaktifkan kompresi gzip pada SSH apa pun. Masukkan Compression yeske dalam Anda ~/.ssh/config, dan itu akan berhasil. Atau, coba jalankan sshdengan -Copsi.

Evgeny
sumber
8

Dari halaman manual ssh (ketik man sshuntuk melihat semuanya):

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

Jadi ubah saja:

ssh hostname

untuk:

ssh -C hostname
rjmunro
sumber
2
Anda dapat mengaktifkan opsi ini di Putty jika Anda menggunakan windows: Koneksi -> SSH -> Opsi protokol -> Aktifkan Kompresi.
Wug
0

Anda dapat mengaktifkan kompresi dengan -Ctetapi tidak akan berfungsi jika server tidak diizinkan untuk menghabiskan daya kernel untuk itu dengan tidak mengizinkan kompresi untuk ini. Sebagai contoh, saya lakukan, karena ini, mengubah lokasi Host dari beberapa data sendiri dari Strato ke server saya. Saya mengenalinya karena penggunaan pengunduhan 2Mbit yang lambat dan koneksi pengunggahan 0,3Mbit dan memang memeriksa perbedaan kecepatan tergantung pada tingkat kompresi karena tingkat yang lebih tinggi tidak selalu lebih cepat karena mengisap daya prosesor Anda atau daya server.
tetapi dalam kasus saya itu melakukan pekerjaan dengan baik karena mempersingkat waktu yang dibutuhkan ke 6 dari waktu sebelumnya.

Andreas Bartels
sumber
Saya benar-benar memeriksa saat memulai jaringan jika kompresi Settet mendapatkan kecepatan dengan melakukan transfer cepat di kedua opsi dan memeriksa waktu. Jawaban yang dihasilkan adalah daripada pengaturan kompresi otomatis atau tidak. Karena itu saya tidak perlu memeriksa koneksi saya setiap saat sebelum mentransfer sesuatu karena selalu lebih baik disesuaikan.
Andreas Bartels
0

Mengapa termudah adalah menggunakan opsi -o, pada cli. Ini dapat digunakan dengan opsi konfigurasi apa pun juga misalnya

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