---
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…
----