%

SSH : Write Failed: broken pipe

Comment remédier à l'erreur SSH nommée 'Write Failed: broken pipe' !

Détails relatifs à l'article

Article publié, le
et modifié le
2 minutes de lecture

Cet article contient 357 mots.

Identifiant de l'article : tag:doc.huc.fr.eu.org,2017-07-23:/fr/sec/ssh/write-failed-broken-pipe#85a27855131e33009b4e9878724348d330951a50096f16c01258b346e1b0d9d6


Source brute de l'article :
Commit version : 9bf3d7b


Cet article est aussi disponible sur le protocole Gemini :
gemini://doc.huc.fr.eu.org/fr/sec/ssh/write-failed-broken-pipe.gmi


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 “<span lang="en">hello-are-you-there</span>” 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.

Attention

Cela devrait améliorer la situation, mais ne la résout pas forcément !

Très utile avec l’usage du fameux projet SSLH - le multiplexeur de connexion HTTPS/SS(H|L)/VPN, etc…



Enjoy-ID!
Enjoy-IT!