J'ai trouvé cette question, mais je suis désolé, je ne comprends pas très bien les paramètres des deux variables ServerAliveInterval
et ClientAliveInterval
mentionné dans la réponse acceptée. Si mon serveur local expire, dois-je définir cette valeur sur zéro ? Cela ne s'arrêtera-t-il jamais ? Dois-je plutôt le régler sur 300 secondes ou quelque chose du genre ?
Ma question est simplement, certaines de mes connexions expirent lorsque je suspends puis réactive mon ordinateur portable avec la réponse Write failed: Broken pipe
et certains non. Comment puis-je configurer correctement un sshd local afin qu'il n'échoue pas avec un tuyau cassé ?
Réponse acceptée :
ServerAliveInterval :nombre de secondes que le client attendra avant d'envoyer un paquet nul au serveur (pour maintenir la connexion active).
ClientAliveInterval :nombre de secondes que le serveur attendra avant d'envoyer un paquet nul au client (pour maintenir la connexion active).
La définition d'une valeur de 0 (valeur par défaut) désactivera ces fonctionnalités afin que votre connexion puisse être interrompue si elle est inactive pendant trop longtemps.
ServerAliveInterval semble être la stratégie la plus courante pour maintenir une connexion en vie. Pour éviter le problème de tuyau cassé, voici la configuration ssh que j'utilise dans mon fichier .ssh/config :
Host myhostshortcut
HostName myhost.com
User barthelemy
ServerAliveInterval 60
ServerAliveCountMax 10
Le paramètre ci-dessus fonctionnera de la manière suivante,
- Le client attendra inactif pendant 60 secondes (temps ServerAliveInterval) et enverra un "paquet null no-op" au serveur et attendra une réponse. Si aucune réponse n'arrive, il continuera à essayer le processus ci-dessus jusqu'à 10 fois (ServerAliveCountMax) (600 secondes). Si le serveur ne répond toujours pas, le client déconnecte la connexion ssh.
ClientAliveCountMax côté serveur peut également aider. Il s'agit de la durée maximale pendant laquelle un client est autorisé à ne pas répondre avant d'être déconnecté. La valeur par défaut est 3, comme dans trois ClientAliveInterval.