İlgili soru: Sunucudan istemciye ssh bağlantısı başlat
Oradan cevap bana çok yardımcı oldu, bu komut ihtiyacım olanı yapıyor:
ssh -R 2225:localhost:22 loginOfServerWithPublicIP@publicIP
Böylece her zaman yeniden bağlanmak için senaryo yazdım:
#!/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
Ve bunu da ekledi /etc/crontab. Fakat bunun sadece kabuğundan "elle" çalıştırılması durumunda işe yaradığını öğrendim, ancak cron tarafından çağrılırsa ssh bağlanır ve hemen biter. (yani, yukarıdaki komut dosyası her zaman yeniden bağlanır)
Ondan man ssh, arkaplan bağlantıları için onu -nanahtarla çağırmam gerektiğini öğrendim , ancak yardımı olmadı. Sonra, sadece benzer betikleri araştırdım ve aradığımı tail -f something, bazı "bitmeyen" komutları çağırdığımda çalıştığını gördüm , bu yüzden boş bir dosya oluşturdum /tmp/dummy_fileve şimdi ssh komutum şöyle gözüküyor:
ssh -o ServerAliveInterval=240 -R 2225:localhost:22 -n user@host tail -f /tmp/dummy_file
Şu an çalışıyor! Ancak, bu çözüm biraz çirkin görünüyor, artı bu davranışın gerçek nedenlerini gerçekten anlamıyorum. Sadece tesadüfen, bashyerine aramaya çalıştım tail -f( bashbana da "bitmeyen" emri geldi), ama işe yaramadı.
Öyleyse, lütfen kimse bu davranışı açıklayabilir mi ve ters ssh tüneli açık tutmak için arkaplan ssh bağlantısı oluşturmanın doğru yolu nedir?
whiletekrar tekrar çalışacağım, sshher 5 saniyede bir yeni arkaplan bağlantısı başlıyor , değil mi? İhtiyacım olan bu değil.


&ssh komutunuzun sonunda kullanmaya ne dersiniz :ssh -o ServerAliveInterval=240 -R 2225:localhost:22 user@host &