Як не допустити, щоб автосміт застряг раз у раз?


12

Я використовую autosshдля створення зворотного ssh-тунелю, але час від часу тунель перестає працювати, і мені потрібно вбити autossh і запустити його заново.

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

Здається, autossh залишається в дивному стані, коли переадресований порт все ще відкритий, але ви не отримаєте жодної відповіді з іншого боку. Перезапустивши автошшш, це вирішено.

Як я можу запобігти появі цієї проблеми?

Відповіді:


6

Використовуючи ServerAliveInterval(із значенням у секундах), змушуйте ssh клієнт надсилати нульовий (keepalive) пакет через зашифрований канал так часто, щоб виявити розірване з'єднання:

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

Напевно, ви також повинні встановити відповідне ClientAliveIntervalналаштування /etc/ssh/sshd_configна своєму сервері, щоб сервер також припинив з'єднання клієнта:

# Drop dead client connections after 10 minutes of inactivity
ClientAliveInterval 600
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.