Linux tidak kehabisan waktu koneksi SSH idle. Anda dapat membiarkan koneksi SSH terbuka tanpa batas waktu, dan selama titik akhir tidak di-boot ulang atau mendapatkan alamat IP baru, koneksi akan tetap berfungsi ketika Anda mengaksesnya setelah waktu idle lama.
Namun jika ada middlebox stateful (NAT, firewall, dll.) Itu kemungkinan akan time out koneksi menganggur. Hasilnya adalah bahwa meskipun koneksi masih hidup di kedua ujungnya, kedua titik akhir tidak dapat berkomunikasi lagi karena middlebox menolak untuk meneruskan paket apa pun sampai klien SSH membuka koneksi baru.
Jika Anda tahu batas waktu middlebox, Anda bisa mengatasi masalah dengan mengkonfigurasi ClientAliveIntervaldi /etc/ssh/sshd_configserver atau ServerAliveIntervaldi ~/.ssh/configklien. Untuk deteksi optimal dari koneksi yang terputus, disarankan untuk mengaktifkan kedua pengaturan. Ini juga akan mendeteksi koneksi yang terputus ketika titik akhir telah di-reboot atau mendapatkan alamat IP baru.
Karena Anda menunjukkan bahwa batas waktu terkadang tampak serendah beberapa detik, ini mungkin tidak cukup untuk menyelesaikan masalah Anda. Batas waktu nyata yang sangat rendah dapat disebabkan oleh CGN yang kelebihan beban atau salah konfigurasi. Anda perlu memeriksa lalu lintas di berbagai titik jalur komunikasi untuk mengetahui apakah CGN bertanggung jawab atas kegagalan tersebut.
Jika ternyata kegagalan tersebut disebabkan oleh ISP Anda melakukan sesuatu yang konyol seperti koneksi load balancing lebih dari beberapa CGN yang tidak berbagi status koneksi, Anda tidak dapat memperbaiki masalah sendiri dengan hanya mengubah konfigurasi SSH Anda.
Jika Anda terjebak dengan ISP dengan CGN yang tidak dapat diandalkan dan mereka menolak untuk memperbaikinya, satu-satunya pilihan yang tersisa yang saya tahu adalah untuk meningkatkan versi klien dan server ke kernel dengan dukungan MPTCP atau menggunakan solusi terowongan yang dirancang untuk mentoleransi spontan. perubahan dalam pemetaan port di NAT.