GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana mencegah SSH terputus jika sudah menganggur untuk sementara waktu

Untuk memperjelas:Saya mencari solusi yang saya mulai sekali setelah masuk, dan kemudian saya ingin menggunakan terminal itu, pergi, kembali dua jam kemudian dan terus bekerja, tanpa mengetik apa pun sebelum pergi.

Masalahnya adalah ada sesuatu (biasanya firewall atau penyeimbang beban), yang menghentikan sesi diam. Jika Anda mengonfigurasi keepalives sesi, keepalives akan mencegah perangkat jaringan menganggap sesi sebagai tidak aktif.

Perbaikan OpenSSH Linux / Unix / Cygwin :
Perbaikan paling sederhana adalah mengaktifkan ssh client keepalives; contoh ini akan mengirimkan ssh keepalive setiap 60 detik:

ssh -o "ServerAliveInterval 60" <SERVER_ADDRESS>

Jika Anda ingin mengaktifkan ini di semua sesi Anda, letakkan ini di /etc/ssh/ssh_config Anda atau ~/.ssh/config :

ServerAliveInterval 60

Untuk informasi selengkapnya, lihat ssh_config halaman manual

Perbaikan Dempul :

Simpan ini ke "Pengaturan Default" Putty Anda...

  • Klik Koneksi
  • Ketik 60 ke dalam "Seconds between keepalives"


Selain jawaban Mike Pennigton, saya ingin memberi tahu Anda tentang ServerAliveCountMax juga.

  • ServerAliveInterval akan mengirimkan keepalive setiap x detik (standarnya adalah 0 , yang menonaktifkan fitur ini jika tidak disetel ke yang lain).
  • Ini akan dilakukan ServerAliveCountMax kali jika tidak ada tanggapan yang diterima. Nilai default ServerAliveCountMax adalah 3 (lihat halaman manual ssh_config).

Contoh:Jika Anda menyetel ServerAliveInterval hingga 60 dan tinggalkan ServerAliveCountMax apa adanya, ini berarti keepalive hanya akan menunggu 3 * 60 = 180 seconds = 3 menit sebelum berhenti.

Untuk meningkatkan ini menjadi mis. 2 jam mencoba untuk menjaga koneksi tetap hidup, Anda dapat melakukan:

Per perintah:

Oleh karena itu Anda harus mempertimbangkan untuk mengatur

ssh -o "ServerAliveInterval 60" -o "ServerAliveCountMax 120" <SERVER_ADDRESS>

Persisten:

Untuk membuatnya persisten, tuliskan ke /etc/ssh/ssh_config (akan berlaku di seluruh sistem) atau ~/.ssh/config (akan berlaku hanya untuk pengguna):

ServerAliveInterval 60
ServerAliveCountMax 120

Catatan

Seperti yang ditunjukkan dengan benar oleh dislick, ini mungkin bukan yang Anda inginkan, tergantung pada situasi Anda:

  • Jika Anda ingin mengakhiri sesi dengan cepat segera setelah server tidak merespons lagi, Anda harus memilih nilai yang rendah untuk ServerAliveCountMax .
  • Jika Anda lebih tertarik untuk mempertahankan koneksi yang sudah ada (misalnya Anda pergi dengan kereta api dan memiliki latensi tinggi), Anda harus memilih nilai yang lebih tinggi untuk ServerAliveCountMax untuk mengizinkan ssh untuk terus mencoba membangun kembali koneksi.

Lihat juga:

  • unix.stackexchange.com - Apa batas waktu idle default untuk OpenSSH?

Saya menggunakan Mobaxterm dan juga menemui masalah ini. Mobaxterm juga dikirimkan dengan opsi untuk menjaga klien tetap hidup saat klien menganggur. Buka Settings -> Configuration -> SSH . Ada bagian berjudul SSH settings , centang opsi SSH keepalive . Maka masalahnya akan hilang.


Linux
  1. Cara SSH di Linux dari Android

  2. Bagaimana Cara Mengetik Kata Sandi Untuk Banyak Windows?

  3. Bagaimana menghindari ssh dari meminta frasa sandi kunci untuk login tanpa kata sandi

  1. Bagaimana mencegah proses dari menulis file

  2. Bagaimana cara mengkonfigurasi D-Bus dan SSH X-Forwarding untuk mencegah SSH menggantung saat keluar?

  3. Cara menghentikan/mencegah bruteforce SSH

  1. Bagaimana Mendeteksi Jika Shell Dikendalikan Dari Ssh?

  2. Journalctl:Bagaimana Mencegah Teks Terpotong Di Terminal?

  3. Cegah Tmux Memulai Di Ssh?