Pertanyaan terkait: memulai koneksi ssh dari server ke klien
Jawaban dari sana banyak membantu saya, perintah ini melakukan apa yang saya butuhkan:
ssh -R 2225:localhost:22 loginOfServerWithPublicIP@publicIP
Jadi saya menulis skrip untuk menghubungkan kembali setiap saat:
#!/bin/bash
while true; do
echo "try to connect..."
ssh -o ServerAliveInterval=240 -R 2225:localhost:22 user@host
echo "restarting in 5 seconds.."
sleep 5
done
Dan menambahkannya ke /etc/crontab. Tetapi saya menemukan bahwa bekerja jika saja saya mengeksekusi "dengan tangan" dari shell, tetapi jika itu disebut oleh cron, ssh menghubungkan dan segera selesai. (jadi, skrip di atas terhubung kembali sepanjang waktu)
Dari man ssh, saya menemukan bahwa untuk koneksi latar belakang saya harus menyebutnya dengan -nkunci, tetapi itu tidak membantu. Kemudian, saya hanya mencari-cari skrip yang mirip dan saya menemukan bahwa itu berfungsi jika saya memanggil tail -f something, yaitu beberapa perintah "neverending", jadi saya baru saja membuat file kosong /tmp/dummy_filedan sekarang perintah ssh saya terlihat seperti ini:
ssh -o ServerAliveInterval=240 -R 2225:localhost:22 -n user@host tail -f /tmp/dummy_file
Berhasil sekarang! Tapi, solusi ini sepertinya agak jelek, ditambah lagi saya tidak terlalu mengerti alasan sebenarnya dari perilaku itu. Secara kebetulan, saya mencoba menelepon bashalih-alih tail -f( bashmenurut saya, perintah "tidak pernah berakhir" juga), tetapi tidak berhasil.
Jadi, dapatkah orang menjelaskan perilaku ini, dan apa cara yang benar untuk membuat koneksi ssh latar belakang untuk menjaga terowongan ssh terbalik?
whileloop saya akan berjalan lagi dan lagi, memulai sshkoneksi latar belakang baru setiap 5 detik, kan? Ini bukan yang saya butuhkan.


&pada akhir perintah ssh Anda:ssh -o ServerAliveInterval=240 -R 2225:localhost:22 user@host &