--- title: "SSH : Write Failed: broken pipe" date: 2017-07-23T22:30:06+01:00 description: "Comment remédier à l'erreur SSH nommée 'Write Failed: broken pipe' !" draft: false tags: ["SSH", "erreur"] --- ## Description Ahhh, les joies de SSH, n'est-ce pas ?! - Ce matin, vous vous levez, vous cherchez à vous connecter à votre serveur… et très rapidement, vous vous faites déconnecter avec ce, *pas joli du tout*, message : **Write Failed: broken pipe**.
Vous vous reconnectez, et rebelote !!! ## Informations Il y a plusieurs raisons possibles à ce genre de déconnexions intempestives, et fortement désagréables, et aucunes de particulières. ## Configuration De fait, il existe trois options SSH à configurer qui permettent d'améliorer sensiblement la tenue de la connexion, dont une `TCPKeepAlive yes` qui peut être paramétrée côté serveur et côté client ! ### Côté serveur Ouvrez votre fichier `/etc/ssh/sshd_config`, et rajoutez ces deux options : * `ClientAliveInterval` : est le nombre de secondes pendant lequel le serveur va attendre avant d'envoyer un paquet null au client - le but étant de garder la connexion vivante. * `ClientAliveCountMax` : est la limite donnée à un client pendant lequel il est autorisé à ne pas donner de réponse, sans se faire déconnecter - sa valeur par défaut est : `3` ### Côté client Ouvrez votre fichier `~/.ssh/config`, et ajoutez ces deux options correspondantes : * `ServerAliveInterval` : est le nombre de secondes pendant lequel le client va attendre avant d'envoyer un paquet null au serveur - le but étant toujours de garder vivante la connexion. * `ServerAliveCountMax` : valeur par défaut est de : `3` ### Explications Ces options ont pour propos de **maintenir la connexion en vie** ; le processus est le suivant : * Quand le timing relatif aux options `ClientAliveInterval` et `ServerAliveInterval` est arrivé à son terme, un signal "``hello-are-you-there``" est envoyé… * le paramétrage des options `ClientAliveCountMax` et `ServerAliveCountMax` est le nombre de fois où ce signal "hello" va être envoyé. * S'il n'y a pas de réponse de l'un ou de l'autre au final, la connexion se fermera. Le calcul est très simple : `ClientAliveInterval` x `ClientAliveCountMax` secondes, côté serveur, et réciproquement pour les options "Server", côté client. {{< note warning >}}ATTENTION** : Mettre à `0` ses options les désactivent !{{< /note >}} ---- Cela devrait améliorer la situation, mais ne la résout pas forcément ! Très utile avec l'usage du fameux projet [SSLH](http:*www.rutschle.net/tech/sslh.shtml) - le multiplexeur de connexion HTTPS/SS(H|L)/VPN, etc… ----