How to prevent autossh from becoming stuck once in a while?
I am using autossh
to build a reverse ssh tunnel but from time to time the tunnel stops working and I need to kill autossh and start it again.
/etc/cron.d/autossh
@reboot autossh -f -nNT -R 3269:intranet.example.com:3269 public.example.com &
autossh seems to remain in a strange state, where the forwarded port is still open but you get no response from the other side. By restarting autossh this is solved.
How can I prevent this problem from occurring?
Solution 1:
Use the ServerAliveInterval
(with a value in seconds) make the ssh
client send a null (keepalive) packet over the encrypted channel every so often in order to detect a broken connection:
/etc/cron.d/autossh
@reboot autossh -f -nNT -R 3269:intranet.example.com:3269 -o ServerAliveInterval=30 public.example.com &
You should probably also set the corresponding ClientAliveInterval
setting in /etc/ssh/sshd_config
on your server to make the server drop dead client connections too:
# Drop dead client connections after 10 minutes of inactivity
ClientAliveInterval 600