web-dev-qa-db-fra.com

Comment éviter que autossh ne se coince de temps en temps?

J'utilise autossh pour construire un tunnel SSH inversé, mais de temps en temps, le tunnel cesse de fonctionner et j'ai besoin de tuer autossh et de le redémarrer.

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

autossh semble rester dans un état étrange, où le port transféré est toujours ouvert mais vous n'obtenez aucune réponse de l'autre côté. En redémarrant autossh, cela est résolu.

Comment puis-je prévenir ce problème?

12
sorin

Utilisez le ServerAliveInterval (avec une valeur en secondes) pour que le sshclient envoie un paquet nul (keepalive) sur le canal chiffré de temps en temps afin de détecter une connexion interrompue. :

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

Vous devez probablement également définir le paramètre ClientAliveInterval correspondant dans /etc/ssh/sshd_config sur votre serveur pour que le serveur supprime également les connexions client mortes:

# Drop dead client connections after 10 minutes of inactivity
ClientAliveInterval 600
5
Tyson