SSH schlägt fehl: PTY-Zuweisungsanforderung auf Kanal 0 fehlgeschlagen

11

Also habe ich den Fehler gegoogelt und den Serverfehler überprüft, aber die Lösungen passten nicht. Die meisten Ergebnisse waren Probleme mit / dev / pts, aber das ist gemountet. Andere Ergebnisse sind Fehler mit git, aber es gibt kein git auf der Maschine.

Mein Konto ist nicht gesperrt, ich kann mich trotzdem an der Konsole anmelden. Andere Benutzer haben dieses Problem ebenfalls, daher glaube ich nicht, dass es etwas mit etwas zu tun hat, das in meiner .ssh /

Ich bekomme diese Antwort mit ssh -vv:

<snip>
debug1: Next authentication method: password
rogier@server's password: 
debug2: we sent a password packet, wait for reply
debug1: Authentication succeeded (password).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug2: callback start
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug2: channel 0: request env confirm 0
debug2: channel 0: request shell confirm 1
debug2: fd 3 setting TCP_NODELAY
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel_input_status_confirm: type 100 id 0
PTY allocation request failed on channel 0
debug2: channel 0: rcvd adjust 2097152
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0

Danach friert die Sitzung ein. Hat jemand eine Idee was los ist?

blauwblaatje
quelle
5
Können Sie sich ssh user@host "/bin/bash -i"anmelden?
Tim
hmm .. ja, das funktioniert ...
blauwblaatje
1
Ich habe einen Fall gesehen, in dem die /dev/pt*Geräte entfernt und manuell neu hinzugefügt werden mussten, weil sie beschädigt wurden. In diesem Fall funktionierte auch die oben aufgeführte Umgehung.
Tim
@ Tim Ich habe das gleiche Problem. Ich kann mich auch mit anmelden ssh user@host "/bin/bash -i. Könnten Sie genauer sagen, welche Befehle ich ausführen muss, um dies zu beheben? Wie stelle ich wieder her /dev/pt*? Vielen Dank.
Erwin Rooijakkers
4
@ user2609980 run mount, eine der ausgegebenen Zeilen sollte / dev / pts sein, notieren Sie sich die Optionen. Hängen Sie die Bereitstellung mit aus umount /dev/ptsund ersetzen Sie sie erneut, mount -t devpts -o OPTIONS devpts /dev/ptsindem Sie OPTIONEN durch die Optionen ersetzen, die Sie vor dem Entfernen der Bereitstellung beobachtet haben.
Tim

Antworten:

10

Ok, danke an Tim. Umounting / dev / pts und dann mount / dev / pts haben den Trick gemacht.

blauwblaatje
quelle
Das ist sehr seltsam. Irgendeine Idee, warum das so ist? Ist das ein Gerätetreiberfehler oder etwas anderes? Wurde es behoben? etc ...
not2qubit
Keine Ahnung. Und ich habe es nicht wieder gesehen.
blauwblaatje
1
@blauwblaatje Ich habe das gleiche Problem. Ich kann mich auch mit anmelden ssh user@host "/bin/bash -i. Könnten Sie genauer sagen, welche Befehle ich ausführen muss, um dies zu beheben? Vielen Dank.
Erwin Rooijakkers
Soweit ich mich erinnern kann, habe ich nur getan: umount / dev / pts && mount / dev /
pts
Ich hatte gerade das Problem und musste, mkdir /dev/ptsbevor es funktionierte. Ansonsten löste dies das Problem für mich.
Angelo Fuchs
1

Lassen Sie mich Ihnen all meine Erfahrungen erzählen. Ich versuche, über ssh eine Verbindung von Linux zu Windows herzustellen . Ich hatte Server mit openssh und andere mit freessh . Wenn der Server opensh hat, funktioniert er einwandfrei, aber seit einiger Zeit wird die Meldung "Shell-Anforderung auf Kanal 0 fehlgeschlagen" angezeigt, wenn der Dienst freessh ausgeführt wird (er kam von einem Tag zum anderen und funktioniert besser openssh)

Ein von mir durchgeführter Test bestand darin, die Verbindung von einem anderen Benutzer herzustellen, da ich sehe, dass dies einwandfrei funktioniert, ich meine ~ / .ssh (den Benutzer, der das Problem darstellt) sichern und danach einwandfrei funktioniert.

Ich denke, die betroffene Datei war bekannt_hosts, die Dauerwellen sehen genauso gut aus wie der Inhalt, aber so habe ich es behoben.

Pérez P. Javier E.
quelle
1

Der Fehler bedeutet nur, dass das Öffnen des Pseudo-Terminals fehlgeschlagen ist. Höchstwahrscheinlich hat es nichts mit ssh zu tun. Verwenden Sie zum Debuggen auf der SSH-Serverseite eine sehr einfache PTY-Demo wie mypty in http://rachid.koucha.free.fr/tech_corner/pty_pdip.html , um festzustellen, ob überhaupt PTY zugewiesen werden kann. Wenn nicht, untersuchen Sie mit strace, wo es fehlschlägt. (Für mich war es ein fehlender / dev / ptmx-Symlink in einem Container, wie unter https://www.kernel.org/doc/Documentation/filesystems/devpts.txt erläutert. )

Uwe Geuder
quelle
0

Könnte von Ihrem LANG und Ihren LC-Einstellungen abhängen, aber das funktioniert bei mir:

unset LANG        2>/dev/null
unset LC_MONETARY 2>/dev/null
unset LC_NUMERIC  2>/dev/null
unset LC_MESSAGES 2>/dev/null
unset LC_COLLATE  2>/dev/null
unset LC_CTYPE    2>/dev/null
ssh -l username hostname
Vidar Messer
quelle
2
Warum könnte das Problem Ihrer Meinung nach mit den Variablen LANGund der LC_*Umgebung zusammenhängen?
Adrian Heine
Ich frage mich, was ich geändert habe, bevor dies geschah. Ich habe tatsächlich einige dieser Variablen geändert! Mal sehen, ob es auch bei mir funktioniert.
Erwin Rooijakkers
0

In meinem Fall stellte ich über eine Linux-Box eine Verbindung zu einem Windows-Host her (auf dem Cygwin und andere verwandte Software ausgeführt wird).

Seltsamerweise haben Versuche, eine Verbindung zum Windows-Server herzustellen, funktioniert, sind jedoch beim Zuweisen des interaktiven Terminals fehlgeschlagen. Überprüfen Sie die ssh -vvProtokolle unten.

...
Authentication succeeded
...
Entering interactive session
Requesting authentication agent forwarding.
Sending environment.
Sending env LANG = en_US.UTF-8
PTY allocation request failed on channel 4
...

Mein Kollege stellte fest, dass es an vielen offenen Prozessen auf dem Windows-Server lag, die dieselben Anmeldeinformationen wie ich verwendeten und einen automatisierten Stapelvorgang durchführten.

Es vorübergehend zu töten, den Trick zu tun und meine SSH-Verbindung erfolgreich zuzulassen.

Höchstwahrscheinlich hatte Windows + Cygwin diesbezüglich eine Höchstgrenze. Es bleibt noch Arbeit, die Zuweisung von Ressourcen korrekt aufzuheben, wenn diese Prozesse ausgeführt werden.

MiKu
quelle