L'écriture a échoué : broken pipe
J'ai une tête d'Ubuntu server. J'ai couru une commande sur le serveur (snapraid sync) sur SSH à partir de mon Mac. La commande a dit que cela prendrait environ 6 heures, alors je l'ai laissé toute la nuit.
Quand je suis descendu ce matin, le Terminal sur Mac a dit: "l'Écriture a échoué: broken pipe"
Je ne suis pas sûr si la commande exécutée complètement. Est-ce un problème de délai d'attente? Si oui, comment puis-je garder la connexion SSH vivant pour la nuit?
- reportez-vous Ici @Garry
- Merci. Ressemble à mon serveur est d'aller dormir, et à l'origine du problème.
- Permet de savoir si vous êtes confrontés à des questions:) @Garry
- Si vous avez juste besoin de la commande à exécuter pleinement, pensez à utiliser nohup:
nohup snapraid sync > snapraid.out &
. Ensuite, vous pouvez fermer votre terminal et la commande sera le garder en cours d'exécution sur le serveur. La sortie de la commande est ajouté à snapraid.out.
Vous devez vous connecter pour publier un commentaire.
Cela devrait résoudre le problème pour la version Mac osX: 10.8.2
ajouter:
à ce fichier:
Ou, si vous voulez qu'il soit un changement global dans le client SSH, pour ce fichier
/private/etc/ssh_config
"ServerAliveInterval 120" en fait, dit "ping" le serveur avec une valeur NULL paquet toutes les 120s, et "TCPKeepAlive non" signifie ne pas définir le SO_KEEPALIVE option de socket (puisque vous ne devriez pas en avoir besoin avec ServerAliveInterval déjà défini, et apparemment, c'est "spoofable" ou impair).
Les serveurs de la même manière, quelque chose qu'ils peuvent ensemble pour le même effet (ClientKeepAliveInterval), mais en général, vous n'avez pas de contrôle sur ces paramètres.
Vous pouvez utiliser le bouton "écran" util pour que. Il suffit de connecter au serveur via SSH, écran de démarrage de session par "écran" exécution de la commande, commencez votre commande et débranchez (ne pas quitter l'écran de session). Lorsque vous pensez que votre commande est déjà fait, vous pouvez vous connecter au serveur et de le joindre à votre session écran où vous pouvez voir l'exécution de la commande de résultats/progrès (dans le cas où l'un doit l'être).
Voir "l'homme de l'écran" pour plus de détails.
Cela devrait résoudre le problème pour ubuntu et linux mint
ajouter:
à
/etc/ssh/ssh_config fichier
Au lieu de l'écran, je le recommande tmux, un (sans doute) une meilleure concurrent à écran
Cette commande crée une session. En tout temps après que vous souhaitez vous connecter:
il y a deux solutions
echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config
echo "ServerAliveInterval 60" >> ~/.ssh/config
Si vous rencontrez toujours des problèmes après avoir modifié /etc/ssh/sshd_config ou si ~/.ssh/config
n'existe tout simplement pas sur votre machine, alors je vous recommandons fortement de réinstaller ssh. Cette solution a pris environ une minute de la fig à la fois "Broken pipe" des erreurs et "fermée par l'hôte distant" erreurs.
jeremyforan la réponse est correcte, mais j'ai trouvé que si vous essayez d'utiliser scp il faut explicitement de pointer vers un fichier de configuration configuré comme décrit, il semble ne pas obéir à la normale de la hiérarchie de config. Par exemple:
œuvres, tout en omettant l'-F génère toujours l'erreur broken pipe.
Après avoir tenté de modifier de nombreux paramètres ci-dessus dans sshd_config (ClientAliveInterval, ClientMaxCount,TCPKeepAlive...) rien n'avait changé. J'ai passer des heures et des jours à chercher une solution sur les forums et les blogs...
Il semble que le problème de bris de tuyau qui interdit de se connecter avec ssh/sftp est venu à partir de paramètres d'autorisations sur ChrootDirectory.
le ChrootDirectory doit appartenir à root/root avec 755 permision
baisse des autorisations 765/766/775... ne fonctionne pas mais strongers faire (par exemple 700)
si vous avez besoin de donner une autorisation en écriture pour l'utilisateur connecté, vous pouvez le donner en sous-répertoires.
si chroot est détenue par sftpUser:sftpGroup, il ne fonctionne pas ni...
l'espoir que cela aiderait
Ubuntu :
ssh -o ServerAliveInterval=5 -o ServerAliveCountMax=1 [email protected]
J'utilise un routeur ASUS avec deux internet de lignes d'entrée. - Je nommer mon adresse IP à une certaine ligne, et il fonctionne.