Saya memiliki koneksi jaringan yang tidak dapat diandalkan antara dua mesin: kadang-kadang koneksi TCP aktif turun karena alasan di luar kendali saya. Saya ingin membuat koneksi TCP yang andal antara kedua mesin.
Jika jaringan itu dapat diandalkan, saya hanya akan berjalan ssh -L 1234:localhost:1234 remotehost
, dengan server mendengarkan pada port 1234 remotehost
, dan mengarahkan klien di localhost:1234
. Tetapi jika koneksi ssh mati, maka koneksi akan diteruskan. Bagaimana saya dapat mengatur untuk secara otomatis memulihkan koneksi antara klien dan server?
Non-solusi:
- Ini bukan untuk aplikasi interaktif, jadi layar tidak berlaku.
- Ini bukan hanya tentang menghubungkan kembali terowongan SSH secara otomatis, " autossh . Saya ingin terus menggunakan koneksi TCP tunneled yang sama, bukan memulai yang baru.
- Pada prinsipnya, VPN akan melakukan trik. Tetapi tampaknya berlebihan ketika saya hanya ingin satu koneksi TCP, dan saya ingin solusi yang berfungsi bahkan jika saya tidak memiliki izin root di kedua sisi.
Saya memiliki memori yang redup dari sebuah program yang disebut rocks
melakukan hal itu, tetapi tampaknya telah jatuh dari permukaan web. Saya sebagian besar tertarik pada Linux di kedua sisi (meskipun saya berharap sebuah program pada tingkat ini akan portabel untuk kesatuan lainnya), tetapi jika Anda mengetahui sebuah program yang bekerja antara QNX dan VMS, semuanya lebih baik.
scp
. Saya merespons dengan keepalives berdasarkan contoh port-forwarding Anda. Re: downstream hop yang rapuh, tidak banyak yang dapat Anda lakukan, selain membuat sesi ssh dengan keepalives yang lebih toleran (yaitu membiarkan lebih banyak drop keepalives dengan ServerAliveInterval > 0
dan ServerAliveCountMax > 3
). NAT membutuhkan interval keepalives yang lebih rendah. Masalah utama adalah untuk mengidentifikasi apa masalahnya dan menyesuaikannya. Masukkan opsi .ssh/config
sehingga mereka selalu ada untuk Anda
rocks
implementasi lain ... meskipun ini jelas merupakan kludge nyata