Empêcher les timeout ssh
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.Voyons comment résoudre ce problème.
Deux approches permettent de contourner ce désagrément : l’approche serveur, et l’approche cliente.
Serveur
Si vous avez un accès administrateur au serveur, 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.
ClientAliveIntervalenvoie un message au client ssh après x secondes sans activité (0 = jamais). Si le client répond au serveur, la connexion est maintenue.ClientAliveCountMaxquant à lui, concerne le nombre maximal de requêtesClientAliveIntervalsans réponse que tolérera le serveur avant de fermer la connexion.
On va donc ajouter les lignes suivantes à /etc/ssh/sshd_config :
ClientAliveInterval 600
ClientAliveCountMax 0On redémarre ensuite le serveur en faisant service ssh restart.
Client
Cette solution est très pratique si l’on a pas un accès root à la machine. 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. On ouvre donc /etc/ssh/ssh_config sur notre client et on y ajoute la ligne suivante :
ServerAliveInterval 120Votre ssh ne devrait désormais plus se couper lors de vos poses cafés ;)
Commentaires
Rejoignez la discussion !