Lorsqu’on est connecté en ssh à un ordinateur distant et qu’on laisse la connexion inactive pendant un certain temps, il arrive que l’on soit déconnecté. On se retrouve alors avec un message du style :
Read from remote host buzut.fr: Connection reset by peer Connection to buzut.fr closed.
Deux approches permettent de contourner ce désagrément : l’approche serveur, et l’approche cliente.
Il est possible de configurer ClientAliveInterval et ClientAliveCountMax.
Il existe bien un paramètre TCPKeepAlive, mais il fonctionne sur la couche transport et non sur la couche applicative. C’est donc un petit peu moins fiable [en] et on préférera le désactiver au profit de ClientAliveInterval ou ClientAliveCountMax.
Ajouter les lignes suivantes à /etc/ssh/sshd_config
:
ClientAliveInterval 600 ClientAliveCountMax 0
Puis redémarrer ensuite le serveur en faisant
service ssh restart.
Cette solution est très pratique si on a pas un accès root au serveur. Il va s’agir d’utiliser la directive ServerAliveInterval. Cette dernière va faire en sorte que le client envoie toutes les x secondes une requête au serveur ssh pour lui signaler qu’il est toujours en vie. Ainsi, on évite la déconnexion par timeout. Pour cela ajouter dans /etc/ssh/ssh_config
sur le client et la ligne suivante :
ServerAliveInterval 120
ssh ne devrait désormais plus se couper.