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?
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.
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.
Cela devrait résoudre le problème pour Ubuntu et Linux Mint Add:
ServerAliveInterval 120
TCPKeepAlive yes
to/etc/ssh/ssh_config fichier
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}
il y a deux solutions
echo "ClientAliveInterval 60" | Sudo tee -a /etc/ssh/sshd_config
echo "ServerAliveInterval 60" >> ~/.ssh/config
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
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
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é.