web-dev-qa-db-fra.com

Échec de l'écriture: tuyau cassé

J'ai un serveur Ubuntu sans tête. J'ai exécuté une commande sur le serveur (synchronisation instantanée) sur SSH à partir de mon Mac. Le commandement a dit que cela prendrait environ 6 heures, alors je l'ai laissé toute la nuit. 

Quand je suis arrivé ce matin, le terminal sur Mac a déclaré: "Échec de l'écriture: tuyau cassé"

Je ne suis pas sûr que la commande s'exécute complètement. Est-ce un problème de délai d'attente? Si tel est le cas, comment puis-je maintenir la connexion SSH active pendant la nuit?

40
Garry Pettet

Cela devrait résoudre le problème pour Mac osX version: 10.8.2

ajouter:

ServerAliveInterval 120
TCPKeepAlive no

dans ce fichier:

~/.ssh/config

Ou, si vous voulez qu'il s'agisse d'un changement global dans le client SSH, vers ce fichier

/ private/etc/ssh_config

"ServerAliveInterval 120" signifie essentiellement "envoyer une requête" au serveur avec un paquet NULL toutes les 120 secondes, et "TCPKeepAlive no" signifie ne pas définir l'option de socket SO_KEEPALIVE (car vous ne devriez pas en avoir besoin avec ServerAliveInterval déjà défini, et apparemment, c'est "spoofable" "ou quelque étrange).

De la même manière, les serveurs ont quelque chose qu'ils pourraient définir pour le même effet (ClientKeepAliveInterval), mais en général, vous n'avez pas autant de contrôle sur ces paramètres.

45
jeremyforan

Vous pouvez utiliser "screen" util pour cela. Connectez-vous simplement au serveur via SSH, démarrez screen session en exécutant la commande "screen", démarrez-la et déconnectez-vous (ne quittez pas la session screen). Lorsque vous pensez que votre commande est déjà faite, vous pouvez vous connecter au serveur et vous connecter à votre session d'écran pour voir le résultat/la progression de l'exécution de la commande (le cas échéant).

Voir "écran homme" pour plus de détails.

22
gumkins

Cela devrait résoudre le problème pour Ubuntu et Linux Mint Add:

ServerAliveInterval 120
TCPKeepAlive yes

to/etc/ssh/ssh_config fichier

5
Subrata Mal

Au lieu de screen, je recommanderais tmux, un (sans doute) meilleur concurrent à screen

tmux new-session -s {name}

Cette commande crée une session. À tout moment après cela, vous souhaitez vous connecter:

tmux a -t {name}
4
jmvbxx

il y a deux solutions

  1. Pour mettre à jour le serveur et redémarrer le serveur sshd

echo "ClientAliveInterval 60" | Sudo tee -a /etc/ssh/sshd_config

  1. Pour mettre à jour le client

echo "ServerAliveInterval 60" >> ~/.ssh/config

2
Spirit

Si le problème persiste après la modification de/etc/ssh/sshd_config ou si ~/.ssh/config N'existe tout simplement pas sur votre ordinateur, je vous recommande vivement de réinstaller ssh. Cette solution a pris environ une minute pour identifier les erreurs "canal cassé" et "fermé par l'hôte distant".

Sudo apt-get purge openssh-server

Sudo apt update

Sudo apt install openssh-server
1
Anton_of_Ternopil

Après avoir essayé de changer plusieurs des paramètres ci-dessus dans sshd_config (ClientAliveInterval, ClientMaxCount, TCPKeepAlive ...), rien n'avait changé. J'ai passé des heures et des jours à chercher une solution sur les forums et les blogs ...

Il semble que le problème des tuyaux cassés qui interdisent la connexion avec ssh/sftp soit dû aux paramètres d’autorisation sur ChrootDirectory. le ChrootDirectory doit appartenir à root/root avec 755 permision autorisations inférieures 765/766/775 ... ne fonctionnera pas mais les forts (par exemple 700) si vous devez donner une écriture permission à l'utilisateur connecté, vous pouvez le donner dans des sous-répertoires . si chroot appartient à sftpUser: sftpGroup, cela ne fonctionnera pas non plus ...

chroot-> root:root 755
| 
---subdirectories-> sftpUser:sftpGroup 700 up to 770 

espérons que cela aiderait

0
David

la réponse de jeremyforan est correcte, mais j'ai constaté que si vous essayez d'utiliser scp , il est nécessaire de le désigner explicitement vers un fichier de configuration configuré de la manière décrite ci-dessus, il semble ne pas respecter la hiérarchie normale de config. Par exemple:

scp -F ~/.ssh/config myfile [email protected]:~

fonctionne, alors que l’omission de -F entraîne toujours l’erreur de canal cassé.

0
Max Mammel