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