Tindak Lanjut: Sepertinya serangkaian pemutusan yang cepat bertepatan dengan beberapa bulan menjalankan setiap server mungkin kebetulan dan hanya berfungsi untuk mengungkapkan masalah yang sebenarnya. Alasan kegagalan untuk menyambung kembali hampir pasti karena nilai AliveInterval (jawaban kasperd). Menggunakan opsi ExitOnForwardFailure harus memungkinkan batas waktu terjadi dengan benar sebelum menghubungkan kembali, yang seharusnya memecahkan masalah dalam banyak kasus. Saran MadHatter (skrip kill) mungkin adalah cara terbaik untuk memastikan bahwa terowongan dapat terhubung kembali walaupun semuanya gagal.
Saya memiliki server (A) di belakang firewall yang memulai terowongan terbalik pada beberapa port ke DigitalOcean VPS (B) sehingga saya dapat terhubung ke A melalui alamat IP B. Terowongan telah bekerja secara konsisten selama sekitar 3 bulan, tetapi tiba-tiba gagal empat kali dalam 24 jam terakhir. Hal yang sama terjadi beberapa waktu lalu pada penyedia VPS lain - berbulan-bulan beroperasi dengan sempurna, lalu tiba-tiba mengalami beberapa kegagalan cepat.
Saya memiliki skrip pada mesin A yang secara otomatis menjalankan perintah tunnel ( ssh -R *:X:localhost:X address_of_B
untuk setiap port X) tetapi ketika dijalankan, katanya Warning: remote port forwarding failed for listen port X
.
Masuk ke sshd /var/log/secure
di server menunjukkan kesalahan ini:
bind: Address already in use
error: bind: Address already in use
error: channel_setup_fwd_listener: cannot listen to port: X
Pemecahan membutuhkan reboot VPS. Sampai saat itu, semua upaya untuk menyambung kembali memberikan pesan "penerusan port jarak jauh gagal" dan tidak akan berfungsi. Sekarang ke titik di mana terowongan hanya berlangsung sekitar 4 jam sebelum berhenti.
Tidak ada yang berubah pada VPS, dan ini adalah mesin sekali pakai, pengguna tunggal yang hanya berfungsi sebagai titik akhir terowongan terbalik. Ini menjalankan OpenSSH_5.3p1 pada CentOS 6.5. Tampaknya sshd tidak menutup port pada akhirnya ketika koneksi terputus. Saya bingung menjelaskan mengapa, atau mengapa hal itu tiba-tiba terjadi sekarang setelah berbulan-bulan operasi yang hampir sempurna.
Untuk memperjelas, saya pertama-tama perlu mencari tahu mengapa sshd menolak untuk mendengarkan port setelah terowongan gagal, yang tampaknya disebabkan oleh sshd membiarkan port terbuka dan tidak pernah menutupnya. Itu tampaknya menjadi masalah utama. Saya hanya tidak yakin apa yang menyebabkannya berperilaku seperti ini setelah berbulan-bulan berperilaku seperti yang saya harapkan (yaitu segera menutup port dan memungkinkan skrip untuk menyambung kembali).