Jak zapobiec blokowaniu się autossh co jakiś czas?

12

Używam autosshdo zbudowania tunelu odwrotnego ssh, ale od czasu do czasu tunel przestaje działać i muszę zabić autossh i uruchomić go ponownie.

/etc/cron.d/autossh
@reboot autossh -f -nNT -R 3269:intranet.example.com:3269 public.example.com &

autossh wydaje się pozostawać w dziwnym stanie, gdzie przekierowany port jest nadal otwarty, ale nie ma odpowiedzi z drugiej strony. Ponowne uruchomienie autossh zostało rozwiązane.

Jak mogę zapobiec występowaniu tego problemu?

sorin
źródło

Odpowiedzi:

6

Użyj ServerAliveInterval(z wartością w sekundach), aby ssh klient wysyłał zerowy (zachowujący) pakiet przez zaszyfrowany kanał co jakiś czas, aby wykryć przerwane połączenie:

/etc/cron.d/autossh
@reboot autossh -f -nNT -R 3269:intranet.example.com:3269 -o ServerAliveInterval=30 public.example.com &

Prawdopodobnie powinieneś również ustawić odpowiednie ClientAliveIntervalustawienie /etc/ssh/sshd_configna swoim serwerze, aby serwer również przerywał połączenia martwych klientów:

# Drop dead client connections after 10 minutes of inactivity
ClientAliveInterval 600
Tyson
źródło