Как предотвратить случайное зависание autossh?
Я использую autossh
построить обратный туннель SSH, но время от времени туннель перестает работать, и мне нужно убить autossh и запустить его снова.
/etc/cron.d/autossh
@reboot autossh -f -nNT -R 3269:intranet.example.com:3269 public.example.com &
Похоже, что autossh остается в странном состоянии, когда перенаправленный порт все еще открыт, но вы не получите ответа с другой стороны. При перезапуске autossh это решается.
Как я могу предотвратить возникновение этой проблемы?
1 ответ
Использовать 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