Que puis-je faire pour configurer SSH à la fois sur le client et les serveurs pour empêcher Write Failed: broken pipe
des erreurs ? Cela se produit souvent si vous mettez votre ordinateur client en veille et que vous le reprenez plus tard.
Réponses
Trop de publicités?J'aime absolument Mosh. Il m'arrive fréquemment de me connecter à un serveur, de fermer mon ordinateur portable et d'aller dans un café, de l'ouvrir et de continuer comme si de rien n'était.
Mosh (mobile Shell)
Application de terminal à distance qui permet itinérant , soutient intermittent connectivité et fournit des services intelligents local echo et l'édition en ligne des frappes de l'utilisateur.
Mosh est un remplacement de SSH. Il est plus robuste et plus réactif, surtout sur les liaisons Wi-Fi, cellulaires et longue distance.
Mosh est un logiciel libre, disponible pour GNU/Linux, FreeBSD, Solaris, Mac OS X et Android.
Pour moi, j'ai eu Write failed: Broken pipe
même lorsque je tapais activement dans vim ou à l'invite Shell. Je ne pouvais pas non plus naviguer sur Internet en local pendant un certain temps. (Je me connectais à distance à Ubuntu en utilisant Terminal).
D'autres personnes de mon réseau diffusent beaucoup de vidéos depuis Netflix et d'autres endroits. Je ne peux pas le prouver, mais je pense que c'est un problème de FAI ou de routeur. Par exemple, Verizon et Netflix s'accusent mutuellement des problèmes de réseau de leurs clients.
Si vous disposez d'une connexion commutée et que vous diffusez de la vidéo ou de la musique en continu avec une connexion SSH ou telnet simultanée, il est inévitable qu'à un moment donné, vous receviez un message de tuyau cassé. La mise à niveau du forfait haut débit de mon fournisseur d'accès à Internet semble avoir réduit la fréquence de mes interruptions de connexion.
J'ai un script sur le serveur distant qui ne semble jamais échouer, quelle que soit la configuration SSH client ou serveur.
#!/bin/bash
while true; do date; sleep 10; done;
Enregistrez-le dans un fichier dummy.sh et exécutez-le rapidement avant de réduire la fenêtre ou de vous en éloigner. Il continuera à imprimer l'horodatage actuel sur le serveur et maintiendra votre connexion en vie tant qu'elle ne sera pas interrompue pour une autre raison. Lorsque vous revenez au terminal, appuyez simplement sur CTRL+C et continuez à travailler.
Vous pouvez ajouter ces arguments chaque fois que vous invoquez ssh : -o ServerAliveInterval=15 -o ServerAliveCountMax=3
Vous n'avez pas à modifier les fichiers /etc/ssh/*config si vous faites cela.
Vous pouvez créer un alias bash ou une fonction ou un script pour rendre cela facile.
Par exemple, ces fonctions bash, que vous pouvez ajouter dans votre .bashrc, do_ssh est utilisé manuellement pour activer les keepalives. do_ssh_pty est utilisé dans scripts pour définir pty et éviter les invites.
do_ssh() {
ssh -o ServerAliveInterval=15 -o ServerAliveCountMax=3 $*
}
do_ssh_pty() {
ssh -tt -o "BatchMode=yes" -o "StrictHostKeyChecking=no" -o ServerAliveInterval=15 -o ServerAliveCountMax=3 $*
}
Maintenant do_ssh user@host
peut être utilisé ou do_ssh user@host <args> <command>
et les keepalives seront actifs.
- Réponses précédentes
- Plus de réponses