Linux SSH Timeout [ditutup]

10

Saya telah berjuang dengan waktu sistem pasangan keluar setelah X menit tidak aktif dan tidak yakin bagaimana cara memperbaikinya.

Saya memiliki kotak CentOS di kantor saya. Terhubung ke SSH tidak dapat menyentuhnya selama 2 jam dan masih hidup ketika saya menjalankan sesuatu.

Namun terhubung ke kotak yang sama di rumah, dan kadang-kadang akan habis setelah beberapa detik kadang-kadang setelah beberapa menit.

Saya akan berpikir itu adalah koneksi internet saya tetapi jika saya aktif menggunakan kotak itu akan tetap terhubung.

Namun jika saya berhenti mengetik ke Google sesuatu itu akan menampilkan pesan terputus dan saya harus menyambung kembali.

Adakah yang bisa saya periksa untuk melihat apa yang sedang terjadi?

Anthony Fornito
sumber
4
Dokumentasi untuk klien Anda (yang tidak disebutkan namanya).
user9517

Jawaban:

14

Hal pertama yang harus Anda perhatikan adalah mengatur ServerAliveInterval. Ini harus diatur di workstation Anda.

Pada klien Linux atau OSX Anda dapat membuat file konfigurasi untuk pengguna Anda di bawah ~ / .ssh / config di workstation Anda. Tambahkan arahan berikut. Dalam kasus saya, saya ingin itu mempengaruhi semua host jadi saya taruh di bawah Host *.

Host *
    ServerAliveInterval 60

Ini akan mengirimkan instruksi noop setiap 60 detik untuk menjaga koneksi tetap terbuka. Anda mungkin ingin mengubah nilai untuk memenuhi kebutuhan Anda.

Di sisi server pastikan TCPKeepAlive diatur ke ya.

grep TCPKeepAlive /etc/ssh/sshd_config
TCPKeepAlive yes

Jika Anda menggunakan Windows, Anda perlu merujuk dokumentasi untuk klien Anda.

digitaladdictions
sumber
11

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.

kasperd
sumber