Kann nicht ssh, Verbindung wird sofort mit Exit-Status 254 beendet

12

Das Letzte, woran ich mich erinnere, ist, das weiche und harte Memlock-Ulimit auf unbegrenzt zu ändern. Jetzt kann ich nicht in die Maschine ssh.

Dies ist das SSH-Protokoll.

Authenticated to IP ([IP]:22).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug2: callback start
debug2: fd 3 setting TCP_NODELAY
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug1: Sending environment.
debug1: Sending env LC_CTYPE = 
debug2: channel 0: request env confirm 0
debug2: channel 0: request shell confirm 1
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted 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
Last login: Wed Aug  6 07:18:07 2014 from IP-SOURCE
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
debug2: channel 0: rcvd eow
debug2: channel 0: close_read
debug2: channel 0: input open -> closed
debug2: channel 0: rcvd close
debug2: channel 0: almost dead
debug2: channel 0: gc: notify user
debug2: channel 0: gc: user detached
debug2: channel 0: send close
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: client-session, nchannels 1
Connection to IP closed.
Transferred: sent 4256, received 2504 bytes, in 0.4 seconds
Bytes per second: sent 9616.9, received 5658.0
debug1: Exit status 254

Ich habe Folgendes bisher erfolglos versucht, bevor ich hier poste:

  1. Ich versuche ein norc noprofile Login von ssh user@host 'bash --noprofile'

  2. Erzwingen eines tty durch ssh -t user@host

  3. Das bash_profile wurde verschoben. Versucht sshing vorbei ssh user@host.

  4. Umbenennen der limits.confDatei in der Hoffnung, dass sie nicht gelesen wird.

  5. SSH-Server neu gestartet.

  6. Führen Sie einen Befehl über knifeas ausknife ssh "name:server" "come_command"

  7. ssh user@host 'ulimit -l 64', ssh user@host 'ulimit -S -l 64', ssh user@host 'ulimit -H -l 64',ssh user@host 'exec ulimit -H -l 64'

Ich bin nicht sicher, ob diese Art der Ausführung von Befehlen inline: ssh user@host "some_command"funktioniert, da ich keine einfache Verzeichnisliste erhalten kann. Ich habe auch versucht, durch neu zu starten ssh user@host 'reboot', glaube aber nicht, dass der Befehl ausgeführt wurde. Ich habe den Computer auch von AWS aus neu gestartet, aber erfolglos.

Ist es eine verlorene Sache, die versucht zu ssh? Kann ich auf irgendeine Weise auf den Server ssh?

theTuxRacer
quelle
1
Wenn die Login-Shell des Remote-Benutzers bash ist, liest bash immer ~ / .bashrc über ssh. Daran führt kein Weg vorbei. Können Sie dort sftp und überprüfen / ändern Sie Ihren bashrc auf diese Weise?
Stéphane Chazelas
Versucht sftp mit CyberDuck, bekam den SSH_FXP_INITFehlercode.
TheTuxRacer
Sie können auch eine detailliertere Ausgabe erhalten, indem Sie die -vOption oder für mehr die -vvOption für noch mehr als die -vvvOption verwenden. ZB ssh -vvv user@host. Das kann Ihnen eine bessere Vorstellung davon geben, wo etwas schief geht.
Warwick
Versuchte das. Hierher habe ich das Protokoll.
TheTuxRacer
Haben Sie eine andere Datei (FTP / HTTP ...?) Oder Shell (Konsole?) Zugriff auf den Computer, die Sie verwenden können?
Stéphane Chazelas

Antworten:

12

Versuche zu ändern

UsePAM yes

auf

UsePAM no

in /etc/ssh/sshd_config(für CentOS)

frad sorvensen
quelle
Es funktioniert, aber warum?
FelikZ
1
Entschuldigung, aber ich erinnere mich nicht an den Grund)
frad sorvensen
Ist SELinux hier im Spiel? Ich frage mich, ob der Kontext von /etc/security/limits.confabgespritzt wurde und Pam ihn nicht mehr verwenden kann.
Steve
Wenn Sie eine Distribution verwenden, ist systemddies meiner Meinung nach eine schlechte Lösung. Dadurch wird verhindert logind, dass eine Sitzung geöffnet wird. Wenn der Benutzer den Computer neu startet, werden einige Prozesse gestartet, da der Benutzer nicht wie erwartet gestoppt wird.
Bigon
In meinem Fall ist der Grund dafür, dass das Hard Open Fils Limit des Benutzers pro Prozessor größer ist als das nr_open. ( nr_openwird beim Neustart des Computers zurückgesetzt): Sie können die Dateien " nr_openby" cat /proc/sys/fs/nr_openund "hard open" überprüfen ulimit -Hn. Wenn Sie weiterhin möchten, dass der SSH-Login-Benutzer die Hard Open File Config verwendet, müssen Sie Folgendes erhöhen nr_open:sudo sysctl -w fs.nr_open=NUM_BIGGER_THAN_HARD
Xin Meng
4

Ich hatte ein ähnliches Problem, ich schien nur folgende seltsame Nachricht zu sehen:

client_input_channel_req: Kanal 0 Typ Exit-Status Antwort 0.

Der Benutzer, in den ich ssh wollte, hatte keine Standard-Shell .

Ich habe folgendes ausgeführt:

chsh -s $(which sh) username 

Und dann konnte ich ssh.

Hinweis: Beim
Ausführen su usernamewurde Exit-Code zurückgegeben 1(fehlgeschlagen), und jetzt funktioniert es einfach.

GabLeRoux
quelle
1
Heiliger Mist, der kryptisch ist! Das war auch mein Problem. Ich habe versucht, einen "System" -Benutzer (kein HOME und keine SHELL) dazu zu bringen, SFTP zu verwenden, und ich konnte mich authentifizieren, aber ich konnte SFTP oder SCP oder SSH nicht verwenden. Dies hat mein Problem behoben. Vielen Dank!
Dave
2

Ich habe dies begegnet auf Mac OS X , wo die Konfiguration in ~/.bashrcein Problem hatte , das verursacht sshzu arbeiten, aber sftpzu nicht Arbeit. @ stéphane-chazelas scheint in den obigen Kommentaren die richtige Idee zu haben.

Benennen Sie das Remote-System über SSH in um und versuchen Sie es erneut , um festzustellen ~/.bashrc, ~/.bashrc-MOVEDob es funktioniert. Stellen Sie dann ~/.bashrcdas Problem wieder her und ermitteln Sie es.

Auf meinem System ~/.bashrcenthielt das Folgendes:

if [ -z "$PS1" ] ; then
    exit
fi

Welches war der wahrscheinliche Schuldige.

razzed
quelle
1

Ich hatte heute das gleiche Problem. Das erste, was mir auffiel, war, dass / var / log zu 100% war. Ich habe das behoben und das Problem nicht gelöst. Ich konnte mich weder anmelden noch über die GUI anmelden, aber ich konnte CNTRL + ALT + F2 verwenden, um zur CLI zu gelangen und mich auf diese Weise anzumelden. Ich habe startx eingegeben und eine Fehlermeldung erhalten, dass /tmp/.X0-lock vorhanden ist.

Ich habe diese Datei entfernt (technisch habe ich alles aus / tmp entfernt) und konnte mich über die GUI und auch über ssh anmelden.

Jerry P.
quelle
Vielen Dank! In meinem Fall war es /homezu 100% gefüllt, was ich unter df -hCentOS 7 festgestellt habe .
RAM237
1

Ich habe die Konfiguration der offenen Dateien in der Kernel-Parameterdatei /etc/security/limits.conf auf unbegrenzt geändert und die Konnektivität verloren.

Nachdem ich es wieder auf den für Root-Benutzer normalen Wert zurückgesetzt hatte, erhielt ich die Konnektivität zurück.

Wrong Example:
## Example hard limit for max opened files
*        hard   nofile unlimited
root     hard   nofile  unlimited
## Example soft limit for max opened files
*        soft   nofile unlimited
root     soft   nofile unlimited

Correct Ex:
## Example hard limit for max opened files
*        hard   nofile 16000
root     hard   nofile 16000
## Example soft limit for max opened files
*        soft   nofile 16000
root     soft   nofile 16000
Santosh Garole
quelle