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?
Utilisez le ServerAliveInterval
(avec une valeur en secondes) pour que le ssh
client 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