Das Beheben der Anforderung ist auf Kanal 0 fehlgeschlagen

75

Wenn ich mich so mit meinem Server verbinden möchte

ssh -a [email protected] -p 22

Es gibt mir zwei Fehlermeldungen:

PTY allocation request failed on channel 0
shell request failed on channel 0

Wenn ich den Parameter benutze, verschwindet -Tdie erste Fehlermeldung. Aber wie kann man den zweiten beheben? Ich kann keine Verbindung herstellen. Mit anderen Servern kann ich mich problemlos verbinden.

Ich bin auf MAC OS 10.9.

Der Parameter -vzeigt mir diese Debug-Ausgabe:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to xxx.your-server.de [188.40.3.15] port 22.
debug1: Connection established.
debug1: identity file /Users/xxx/.ssh/id_rsa type -1
debug1: identity file /Users/xxx/.ssh/id_rsa-cert type -1
debug1: identity file /Users/xxx/.ssh/id_dsa type -1
debug1: identity file /Users/xxx/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version mod_sftp/0.9.8
debug1: no match: mod_sftp/0.9.8
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 55:f5:ca:ca:01:45:0f:7b:71:0a:1f:ba:9e:25:17:fb
debug1: Host 'xxx.your-server.de' is known and matches the RSA host key.
debug1: Found key in /Users/xxx/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/xxx/.ssh/id_rsa
debug1: Trying private key: /Users/xxx/.ssh/id_dsa
debug1: Next authentication method: password

Nachdem ich das Passwort eingegeben habe, erhalte ich Folgendes:

debug1: Authentication succeeded (password).
Authenticated to xxx.your-server.de ([xxx.xxx.3.15]:22).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = de_DE.UTF-8
shell request failed on channel 0
user1895268
quelle
4
Der Client fordert eine Shell-Sitzung mit einem TTY an und der Server lehnt sie ab. Der Server gibt dem Client keinen detaillierten Grund an, warum die Anforderung abgelehnt wurde. Sie müssen dies auf dem Server und nicht auf dem Client beheben.
Kenster
Vielen Dank für Ihre Antwort. Sie haben Recht, der Server stellt diese Anfrage nicht bereit. Ich weiß nicht, wo ich herausfinden soll, wo das Problem liegt. Ich habe bereits einige andere Beiträge gelesen, die jedoch nicht genau meinem Problem entsprachen. Kann mir bitte jemand einen Hinweis geben?
user1895268
2
Versuchen Sie es ssh [-neccessary options] /bin/bash -i. Dies könnte eine informativere Fehlermeldung von der Serverseite geben (z. B. "Berechtigung verweigert" oder "Segmentierungsfehler")
Hans Lub
9
Die debug1: Remote protocol version 2.0, remote software version mod_sftp/0.9.8Zeile zeigt an, dass der Remote-Server proftpd + mod_sftp ist und das Modul mod_sftp keine Shell-Anforderungen implementiert / unterstützt, sondern nur SFTP / SCP. Also der shell request failedFehler.
Castaglia

Antworten:

25

PTY-Zuweisungsanforderung auf Kanal 0 fehlgeschlagen

Es gibt ein Limit von 256 Pseudo-Terminals in einem System. Möglicherweise haben Sie eine Anwendung, bei der Pseudoterminals undicht sind. Verwenden

lsof /dev/pts/*

um zu sehen, welche Prozesse offene Pseudo-Terminals haben

Shell-Anfrage auf Kanal 0 fehlgeschlagen

Ich habe diesen Fehler erhalten (ohne PTY-Zuordnungsfehler). Es stellt sich heraus, dass eine meiner Anwendungen (QtCreator 3.0.?) Zombie-Prozesse leckte. Andere Benutzer konnten sich anmelden, sodass ich möglicherweise mein Prozesskontingent pro Benutzer erreicht habe (falls es so etwas gibt). Ich habe auf QtCreator 3.3 aktualisiert. So weit, ist es gut.

vharron
quelle
So überprüfen Sie, ob mein Remotecomputer unter Windows Linux ist. Ich verbinde mich jedoch mit ssh auf einem Windows-Computer mit GitBash mit diesem Remotecomputer. Wie man diesen Befehl unter Windows
ausführt
Das OP sagte, dass sie unter MacOS sind. Soll diese Lösung unter MacOS funktionieren? Als ich es versuchte (MacOS 10.15.5), bekam ich : lsof: status error on /dev/pts/*: No such file or directory.
Jeremy
21

unmount und mount haben /dev/ptsbei mir funktioniert

umount /dev/pts

mount devpts /dev/pts -t devpts

Referenz: http://www.iitk.ac.in/LDP/LDP/lfs/5.0/html/chapter06/proc.html

Rajagopalx
quelle
Wenn Sie sich über ssh anmelden können, funktioniert "umount" nicht, da das Gerät verwendet wird.
Steven der leicht amüsierte
1
Ich habe mit Namespaces herumgespielt und wollte in ein Chroot-Gefängnis, das in einem separaten Namespace läuft. Ich habe den gleichen Fehler erhalten, aber mount devpts /dev/pts -t devptsden Trick für mich getan.
Phoenix87
Fügen Sie hinzu, dass dies auf dem Server ist , nicht im Client
Somenxavier
7

Ich hatte genau den gleichen Fehler beim Versuch, über ssh eine Verbindung zu meinem Server herzustellen. Wie ich sehen kann, verwenden Sie einen von Hetzner bereitgestellten Server, der über Port 22 eine Verbindung zu ihm herstellt:

debug1: Verbindung zu xxx.your-server.de [188.40.3.15] Port 22 herstellen.

Das offizielle Wiki / die offizielle Dokumentation von Hetzner sagt:

Protokoll für die verschlüsselte Ferndiagnose für Server / Computer (Konsolen). Der zu verwendende SSH-Port ist 222.

Sie müssen also eine Verbindung über Port 222 herstellen:

ssh -p 222 [email protected]
ThreeCheeseHigh
quelle
5

Ich habe ein ähnliches Problem mit einem unserer Benutzer gelöst, der nur für die Weiterleitung von SSH-Ports verwendet wurde, sodass er keinen Zugriff auf PTY benötigen muss. Dies war in der Datei .ssh / authorized_keys verboten:

no-pty ssh-rsa AAA...nUB9 someuser

Wenn Sie also versucht haben, sich bei diesem Benutzer anzumelden, wird nur eine Nachricht angezeigt

PTY allocation request failed on channel 0

wurde zurückgegeben. Überprüfen Sie daher die Datei "authorized_keys" Ihres Benutzers.

Ondrej Homolka
quelle
5

Fügen Sie diese Zeilen einfach zu Ihrem /etc/mtabund hinzu /etc/fstabund starten Sie das System neu.

none    /dev/pts    devpts    defaults    0    0
Mansur Ali
quelle
1
Das hat funktioniert. Auf einer Live-CD können Sie außerdem Folgendes tun: $ mount -t devpts none / target / dev / pts; chroot / target
Michael Galaxy
Wenn ich Git Bash verwende, um eine Verbindung zum aws-Server herzustellen, und dieses Problem habe. sollte ich diese Dateien aus dem Hauptverzeichnis von Git bash unter Programme ändern?
Nützlicher Tipp: Sie können einen Befehl ausführen, ohne sich anzumelden und eine Pty zuzuweisen, z. B.ssh [email protected] '/sbin/reboot'
Robert Calhoun
54
Aber was macht dieser Code? Sie sollten eine Erklärung geben
Tristan
1
Wir haben diesen Vorgang durchgeführt (fstab & mtab ändern und neu starten) und es hat funktioniert ... für eine Weile. Anscheinend war es der Neustart, der das Problem behoben hat, und jetzt besteht unser Verdacht, dass dem Remotecomputer die Ressourcen ausgehen.
Steven der leicht amüsierte
4

Versuche dies:

vi /etc/security/limits.d/20-nproc.conf
*          soft    nproc     4096   # change to 65535 
root       soft    nproc     unlimited
xmduhan
quelle
4

Ich habe gerade herausgefunden, was das Problem in meinem Fall war (Provider Strato): Ich hatte am Ende das gleiche Problem mit der Ausgabe "Shell-Anfrage auf Kanal 0 fehlgeschlagen".

Ich muss das Master-Passwort mit dem Web-Domain-Namen als Login verwenden. (Auf Deutsch www.wunschname.de, wobei wunschname Ihre Webadresse ist.)

Ein SSH-Login mit SFTP-Benutzernamen und den entsprechenden Passwörtern ist erfolglos. (Obwohl scp und sftp mit diesen sftp-Benutzern funktionieren!)

feli_x
quelle
2

Es ist eine alte Frage, aber wenn jemand wie ich hierher kommt ...

Dies kann auf ein falsches Datum auf dem Server zurückzuführen sein. Wenn Sie mit einem eingebetteten System arbeiten, kann dies die Ursache sein ... Überprüfen Sie also Ihr Datum:

$ date
Ian Koerich Maciel
quelle
1

Der Neustart der Instanz von der AWS-Konsole hat bei mir funktioniert. Es gab einen Dienst, bei dem Dateiverbindungen verloren gingen und der lsofbei der Suche half.

Randhir Singh
quelle
1

shell request failed on channel 0

Das heißt, Sie haben keinen Zugriff auf Shell- oder Remote-Befehle. Korrigieren Sie Ihre Benutzerberechtigung auf dem Server, um Shell-Zugriff zu erhalten, oder wenn Sie nur die Verwendung -Nund -TOptionen des Tunnels wünschen

ewwink
quelle
2
wäre ein tolles Beispiel ..: D
David Noreña
1

Ich stand auch vor dem gleichen Problem. Nur ein Neustart meiner Server löste das Problem.

Vivek Garg
quelle
1

Dies hat mir aus den verschiedenen Antworten geholfen.

  • Versuchen Sie, sich als root anzumelden, damit Sie in den meisten Fällen davon profitieren
  • Versuchen Sie, sich als ein anderer Benutzer anzumelden. Dies ist erfolgreich. Dies bedeutet, dass das Problem bei einem bestimmten Konto liegt und dass bereits einige Prozesse von dem problematischen Konto gestartet wurden, die Ressourcen verbrauchen, die die Anmeldung verhindern (höchstwahrscheinlich keine Prozesse) )
  • Erhöhen Sie das Limit in /etc/security/limits.d/20-nproc.conf, wie oben von xmduhan erwähnt
  • Versuchen Sie erneut zu ssh, es sollte funktionieren
Aejaz
quelle
0

Remounting / dev / pts funktioniert bei mir. Sie können dies remote über ssh tun, wenn Sie ssh wie folgt auf dem betroffenen Computer ausführen. ssh fordert keine tty an, wenn Befehle wie diese ausgeführt werden. Auf diese Weise können Sie / dev / pts remote erneut bereitstellen

ssh user @ host - 'mount -o remount, rw / dev / pts'

Slavek Jurkowski
quelle
1
Gibt mir zurück mount: only root can use "--options" option. Nun, ich habe keine rootVorrechte.
Boooooooooms
0

Ich sehe dies gelegentlich beim Hochfahren einer VM. Unser Automatisierungssystem beginnt mit der Anwendung von Updates, sodass je nach Zeitpunkt ein Update für kritische Pakete erfolgen kann.

Fazit - Dies kann passieren, wenn ssh oder andere verwandte Pakete auf dem Zielcomputer aktualisiert werden.

Criggie
quelle
0

Ich habe diesen Fehler bei der Verwendung meiner Git-Bash festgestellt. Ich konnte dieses Problem lösen, indem ich git für Windows neu installierte. Weitere Details in dieser Antwort .

user3885927
quelle
0

Sollte eine Person sich selbst das Lesen dieses QA finden , während sie versuchen , sshin ein Gerät NetGear ReadyNAS, achten Sie darauf , dass die „rsync nur“ Checkbox ist un im Dialogfeld für den SSH - Dienst im Admin - Interface überprüft.

Chris K.
quelle
0

Dies geschah, als ich versuchte, sudo zu verwenden, ssh -t [email protected]nachdem ich den öffentlichen Schlüssel meines lokalen Benutzers zu github hinzugefügt hatte

Nur ein Kopf ist bis zu den Google-glücklichen Menschen wie mir

Jonathan dos Santos
quelle
0

Nur ein Neustart einer AWS-Instanz behebt den Fehler "Shell-Anforderung auf Kanal 0 fehlgeschlagen".

Kiruthika Kanagarajan
quelle
0

versuchen Sie es mit der Option -NT

ssh -NT ...

Shahid
quelle
3
Warum? Können Sie zukünftigen Besuchern, die möglicherweise auf ähnliche Probleme stoßen, eine Erklärung für den langfristigen Wert und die Hilfsbereitschaft hinzufügen?
SherylHohman