Question ssh se déconnecte immédiatement "Write failed: pipe cassée"


Lorsque j'essaie de me connecter à une machine distante via ssh, je suis immédiatement déconnecté avec "Échec de l'écriture: tuyau cassé". J'ai plutôt essayé de me connecter via mosh et le client mosh se bloque.

J'ai essayé de googler autour et les seules réponses que je peux trouver sont liées aux délais d'attente (par exemple, cette question d'échange de pile Unix). Je suis à peu près certain que ce n'est pas un problème lié au délai d'expiration, car je n'ai apporté aucune modification de configuration personnelle depuis hier soir (la dernière fois que cela fonctionnait) et les autres utilisateurs peuvent très bien se connecter.

Exécuter ssh avec -vvv (journaux très très verbeux) ne révélaient rien d’utile.

J'ai déjà résolu mon problème spécifique (voir ma réponse ci-dessous), mais je me demandais quels autres problèmes pourraient causer le problème (ssh se déconnectant immédiatement en indiquant seulement "Write failed: broken pipe")?

Je me demande en outre si sshd / mosh / etc pourrait indiquer qu’il est impossible de créer une session pour diagnostiquer des problèmes?


3
2018-01-14 16:29


origine




Réponses:


Donc, dans mon cas particulier, j'avais laissé un screen course ouverte gdb attaché à un processus essayant de reproduire un problème qu'un client avait lié à notre produit, générant trop de threads. Eh bien, apparemment, le problème avait été reproduit du jour au lendemain et mon utilisateur avait atteint la limite de thread utilisateur du système.

Ainsi, sshd ne pouvait pas générer un nouveau processus sous mon utilisateur à cause de la limite de processus et de thread. En fin de compte, nous devions nous connecter avec un utilisateur différent et tuer mon screen, gdb, et le processus étant débogué. Cela a libéré les ressources de processus et de threads, ce qui m'a permis de me reconnecter.


1
2018-01-14 16:29





Une autre solution est détaillée ici: https://access.redhat.com/solutions/30316

J'ai commencé avec le même problème et pendant l'enquête, j'ai demandé à un autre utilisateur d'essayer de devenir mon utilisateur. Il a eu l'erreur qui m'a conduit au lien ci-dessus (impossible de définir l'ID utilisateur: ressource temporairement indisponible). J'étais en effet au-dessus de la limite de thread autorisée pour mon utilisateur et l'augmentation de cette limite m'a permis de me connecter à nouveau.

Fondamentalement, exécutez ceci contre votre utilisateur (c'est le nombre actuel de threads actifs pour cet utilisateur):

ps -u testuser -L | wc -l

Si le résultat est supérieur à la limite définie, /etc/security/limits.d/90-nproc.conf (la valeur par défaut est 1024) pour cet utilisateur, que vous devez l’augmenter. Vous devrez le faire avec un autre utilisateur qui n'a pas encore dépassé sa limite (ou d'une certaine manière, tuer certains threads pour pouvoir vous connecter).

Pour l'augmenter, ajoutez simplement une ligne similaire à celle existante, mais spécifique à votre utilisateur:

testuser   soft    nproc     2048

Je sais que c'est une vieille question, mais cela pourrait aider les gens qui ont ce problème.


-1
2017-08-02 13:33



Veuillez éviter de poster des réponses sur des liens uniquement. Les liens peuvent se briser dans le temps, rendant cette réponse inutile pour les autres visiteurs. Veuillez inclure la solution dans la réponse. - mtak
édité, merci pour la suggestion! - alexS