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
.
ClientAliveInterval
envoie un message au client ssh après x secondes sans activité (0 = jamais). Si le client répond au serveur, la connexion est maintenue.ClientAliveCountMax
quant à lui, concerne le nombre maximal de requêtesClientAliveInterval
sans 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 0
On 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 120
Votre ssh ne devrait désormais plus se couper lors de vos poses cafés ;)
Commentaires
Rejoignez la discussion !