Как предотвратить случайное зависание autossh?

12

Я использую autosshдля создания обратного туннеля SSH, но время от времени туннель перестает работать, и мне нужно убить autossh и запустить его снова.

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

Кажется, что autossh остается в странном состоянии, когда переадресованный порт все еще открыт, но вы не получите ответа с другой стороны. При перезапуске 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
Тайсон
источник