Saya punya ServerAliveInterval
dan dalam kasus beberapa mesin juga ClientAliveInterval
diatur ke 540 di SSH klien / file konfigurasi server (saya kira pengaturannya lebih dari itu tidak akan menjadi ide yang baik). Saya bekerja dengan banyak sesi SSH yang saat ini membeku setelah beberapa menit.
Bagaimana saya bisa memperbaikinya? Yang saya inginkan adalah memiliki sesi untuk tidak membeku sama sekali, sehingga jika saya membuka sesi di 8 dan tidak menggunakannya selama 4 jam, misalnya, untuk tetap menggunakannya lagi di 12 tanpa harus login lagi .
TCPKeepAlive yes
?TCPKeepAlive yes
- tergantung pada mesin.autossh
...screen
sebagai gantinya. Tetapi saya masih menjawab pertanyaan Anda karena saya mengalami masalah yang sama setelah hanya satu atau dua menit.Jawaban:
Perubahan yang Anda buat
/etc/ssh/ssh_config
dan/etc/ssh/sshd_config
sudah benar tetapi tetap tidak akan berpengaruh.Agar konfigurasi Anda berfungsi, buat perubahan konfigurasi ini pada klien:
/etc/ssh/ssh_config
ServerAliveInterval Klien akan mengirim paket nol ke server setiap 100 detik untuk menjaga koneksi tetap hidup
Paket NULL dikirim oleh server ke klien. Paket yang sama dikirim oleh klien ke server. Paket TCP NULL tidak mengandung flag pengendali seperti SYN, ACK, FIN dll. Karena server tidak memerlukan balasan dari klien. Paket NULL dijelaskan di sini: https://tools.ietf.org/html/rfc6592
Kemudian mengkonfigurasi bagian sshd di server.
/etc/ssh/sshd_config
ClientAliveInterval Server akan menunggu 60 detik sebelum mengirim paket nol ke klien untuk menjaga koneksi tetap hidup
TCPKeepAlive Ada untuk memastikan bahwa firewall tertentu tidak menjatuhkan koneksi idle.
ClientAliveCountMax Server akan mengirim pesan hidup ke klien meskipun belum menerima pesan apa pun dari klien.
Akhirnya restart
ssh server
service ssh restart
atauservice sshd restart
tergantung pada sistem yang Anda gunakan.sumber
ServerAliveCountMax
juga diperlukan agar ini dapat diandalkan. Dan jika keduanyaServerAliveInterval
danClientAliveInterval
cukup rendah, saya tidak berpikir akan ada kebutuhanTCPKeepAlive
. Selain itu, jika ada middlebox, mereka masih dapat kehilangan status bahkan dengan semua pengaturan yang disebutkan sebelumnya dikonfigurasi dengan benar. Mungkin membantu menggunakan MPTCP (jika klien dan server mendukungnya).ClientAliveInterval
danClientAliveCountMax
merupakan opsi server ssh, dengan demikian dimaksudkan untuksshd_config
dan tidakssh_config
ssh_config
sesi baru akan membaca file itu. The/etc/environment
file adalah hal yang berbeda yang memiliki formatVAR="value"
tanpa spasi sehinggaVAR = "value"
akan menjadi tidak valid. Sumber dengan/etc/ssh/ssh_config
cara itu yaitu membaca:Port 22
atauHost *
yang akan memperlakukan ini sebagai perintahSaran pribadi: gunakan
screen
pada host jarak jauh; itu akan berhasil menjaga koneksi Anda tetap hidup selama tetap aktif di terminal.Inilah yang biasanya saya tambahkan
/etc/screenrc
untuk identifikasi cepat dari sesi layar saya:EDIT: Petunjuk.
The
hardstatus
String akan menunjukkan baris status bawah seperti ini:Buffer gulir balik juga diperluas ke 8192 baris, bukan 1000-1500 biasa (tergantung pada distribusinya).
sumber
screenrc
file Anda ? Bagaimana cara mengkonfigurasi sistem layar peluncuran / tmux tepat setelah saya masuk?screen
tidak membuat koneksi ssh Anda tetap hidup. Ini menjalankan proses di terminal virtual yang independen dari terminal pengguna yang Anda hubungkan melaluissh
sehingga proses tidak bergantung pada koneksi Anda. Anda akan tetap kehilanganssh
koneksi sampai terpecahkan.screen
, saya menyarankan pengguna baru untuk memulaitmux
.Dengan OpenSSH:
Anda harus mengaktifkan
baik di klien Anda ssh_config (mis
/etc/ssh/ssh_config
atau dalam~/.ssh/config
) dan server SSH tujuan Anda yang menjalankan OpenSSH (mis. / etc / ssh / sshd_config).Jadi setiap kali koneksi Anda idle, OpenSSH mengirimkan beberapa paket dummy ke host tujuan Anda ...
sumber
The default is ''yes'' (to send TCP keepalive messages), and the server will notice if the network goes down or the client host crashes.
...this means that connections will die if the route is down temporarily, and some people find it annoying.
linux.die.net/man/5/sshd_config"[…] network goes down […] client host crashes […] route is down […]"
ada kesalahan parah yang tidak dapat ditangkap oleh konfigurasi SSH. Masalah utama di sini adalah sesi SSH idle, bukan kegagalan jaringan. Oleh karena itu, jumlahkan: - aktifkanTCPKeepAlive yes
di server dan klien. - aturClientAliveInterval
di server - aturIdleTimeout
di server - aturClientAliveCountMax
Yang seharusnya melakukan trik ...Jika masalahnya adalah laptop hibernasi atau koneksi jaringan yang kurang sempurna, saya sarankan menggunakan
mosh
yang berjalanssh
dan memungkinkan menghubungkan kembali otomatis.Dari situs web :
Dalam kombinasi dengan
tmux
(atau yang lebih tuascreen
), ini memungkinkan saya untuk terhubung melaluissh
ke server dari laptop saya dan tetap terhubung selama berhari-hari bahkan ketika mengubah koneksi wifi dan selamat dari drop-out data seluler.sumber
Periksa konfigurasi sshd Anda pada mesin host
/etc/sshd_config
untukIdleTimeout
pengaturan .sumber