Que signifie le message de canal cassé dans une session SSH?
103
Parfois, ma session SSH se déconnecte avec un Write failed: Broken pipemessage. Qu'est-ce que ça veut dire? Et comment puis-je garder ma session ouverte?
Je sais à propos screen, mais ce n'est pas la réponse que je cherche. Je pense que c'est une sshdoption de configuration.
Il est possible que votre serveur ferme trop longtemps les connexions inactives. Vous pouvez mettre à jour votre client ( ServerAliveInterval) ou votre serveur ( ClientAliveInterval)
ServerAliveInterval
Sets a timeout interval in seconds after which if no data has
been received from the server, ssh(1) will send a message through
the encrypted channel to request a response from the server. The
default is 0, indicating that these messages will not be sent to
the server. This option applies to protocol version 2 only.
ClientAliveInterval
Sets a timeout interval in seconds after which if no data has
been received from the client, sshd(8) will send a message
through the encrypted channel to request a response from the
client. The default is 0, indicating that these messages will
not be sent to the client. This option applies to protocol
version 2 only.
Pour mettre à jour votre serveur (et redémarrez votre sshd)
echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config
Une solution alternative serait d'utiliser mosh- le shell mobile . Contrairement à SSH, il se connecte via UDP et prend en charge l'itinérance. Vous pouvez commencer votre session à la maison, suspendre votre ordinateur portable, l'amener au travail / entre amis / partout où vous avez Internet, suspendre votre ordinateur portable et continuer à travailler comme si rien ne s'était passé. Cela est particulièrement utile si vous êtes sur une mauvaise connexion Internet: il affiche un retour instantané si vos frappes de touches n'atteignent pas le serveur et tente continuellement de rétablir la connexion.
L'installation et la configuration sont simples: il est maintenant inclus dans toutes les distributions Linux actuelles (plus quelques non-Linux) et coordonne l'initialisation et l'authentification de la session via une connexion SSH antérieure. Donc, si vous êtes en mesure de vous connecter via ssh user@servervous, il est très probable que vous pourrez vous connecter avec mosh simplement en appelant mosh user@server, si les packages mosh sont installés aux deux extrémités.
La principale raison des échecs de connexion est que vous devez atteindre le serveur sur un port UDP (plage par défaut: 60000-61000) pour que mosh fonctionne. Donc, si le serveur est derrière un pare-feu, vous n’aurez généralement pas de chance si vous ne pouvez pas vous tromper vous-même ( conséquences pour la sécurité ).
Si vous souhaitez avoir une période de connexion plus longue, ajoutez dans le client:
echo 'ServerAliveInterval 30' | sudo tee -a ~/.ssh/config
echo 'ServerAliveCountMax 1200' | sudo tee -a ~/.ssh/config
ServerAliveCountMaxPar défaut, il est défini sur 3. Par conséquent, une fois que le groupe ServerAliveIntervala envoyé 3 petits paquets d'informations à votre serveur, il se déconnecte automatiquement. Le régler à 1200 signifie que ce processus devra être exécuté au moins 1200 fois. En bref, vous devez être connecté au moins 30 * 1200 secondes (10 heures).
Pourquoi utiliser sudo pour un fichier qui appartient à l'utilisateur actuel ou qui n'existe pas encore?
Hubert Grzeskowiak
2
Cela signifie généralement que votre connexion réseau (TCP) a été réinitialisée. Par exemple, votre fournisseur d'accès Internet vous a reconnecté ou quelque chose comme ça.
J'ai eu le même problème mais ce n'est pas comme prévu. Si vous constatez que, sur le même réseau, un autre serveur tente d'obtenir la même adresse IP, vous rencontrerez le même problème. Pour résoudre ce problème, vous devez vérifier si d'autres serveurs utilisent votre même adresse IP. Cela peut être fait en utilisant la arpcommande.
J'utilise Debian, voici donc un exemple des commandes que j'utilise pour déterminer si un autre serveur utilisait effectivement la même adresse IP.
~/.ssh/config
sur mon Mac, est-ce que je dois le créer ici ou c'est ailleurs?~/.ssh
). Somkdir -p ~/.ssh; chmod 700 ~/.ssh; touch ~/.ssh/config
Une solution alternative serait d'utiliser
mosh
- le shell mobile . Contrairement à SSH, il se connecte via UDP et prend en charge l'itinérance. Vous pouvez commencer votre session à la maison, suspendre votre ordinateur portable, l'amener au travail / entre amis / partout où vous avez Internet, suspendre votre ordinateur portable et continuer à travailler comme si rien ne s'était passé. Cela est particulièrement utile si vous êtes sur une mauvaise connexion Internet: il affiche un retour instantané si vos frappes de touches n'atteignent pas le serveur et tente continuellement de rétablir la connexion.L'installation et la configuration sont simples: il est maintenant inclus dans toutes les distributions Linux actuelles (plus quelques non-Linux) et coordonne l'initialisation et l'authentification de la session via une connexion SSH antérieure. Donc, si vous êtes en mesure de vous connecter via
ssh user@server
vous, il est très probable que vous pourrez vous connecter avec mosh simplement en appelantmosh user@server
, si les packages mosh sont installés aux deux extrémités.La principale raison des échecs de connexion est que vous devez atteindre le serveur sur un port UDP (plage par défaut: 60000-61000) pour que mosh fonctionne. Donc, si le serveur est derrière un pare-feu, vous n’aurez généralement pas de chance si vous ne pouvez pas vous tromper vous-même ( conséquences pour la sécurité ).
la source
Si vous souhaitez avoir une période de connexion plus longue, ajoutez dans le client:
ServerAliveCountMax
Par défaut, il est défini sur 3. Par conséquent, une fois que le groupeServerAliveInterval
a envoyé 3 petits paquets d'informations à votre serveur, il se déconnecte automatiquement. Le régler à 1200 signifie que ce processus devra être exécuté au moins 1200 fois. En bref, vous devez être connecté au moins 30 * 1200 secondes (10 heures).la source
Cela signifie généralement que votre connexion réseau (TCP) a été réinitialisée. Par exemple, votre fournisseur d'accès Internet vous a reconnecté ou quelque chose comme ça.
la source
J'ai eu le même problème mais ce n'est pas comme prévu. Si vous constatez que, sur le même réseau, un autre serveur tente d'obtenir la même adresse IP, vous rencontrerez le même problème. Pour résoudre ce problème, vous devez vérifier si d'autres serveurs utilisent votre même adresse IP. Cela peut être fait en utilisant la
arp
commande.J'utilise Debian, voici donc un exemple des commandes que j'utilise pour déterminer si un autre serveur utilisait effectivement la même adresse IP.
Vous remarquerez que deux ensembles d’adresses MAC utilisent la même adresse IP. Évitez les conflits en définissant l'une sur une autre adresse IP.
la source
Une autre cause du "message de tuyau cassé" est qu'une autre machine tente d'utiliser la même adresse IP que votre hôte.
Un moyen simple de tester si quelqu'un d'autre utilise cette adresse IP:
Pour savoir quelles machines se trouvent sur votre réseau, vous pouvez utiliser le titre de cette question Unix et Linux: Comment trouver quelles autres machines sont connectées au réseau local .
la source