Es wird versucht, SSH auf einem Remotecomputer auszuführen, aber es wird weiterhin nach dem Kennwort gefragt

18

Es wird versucht, SSH auf einem Remotecomputer auszuführen, aber es wird weiterhin nach dem Kennwort gefragt.

Ich besitze eine Reihe von Computern, auf denen SElinux ausgeführt wird, und nur einer von ihnen hat es mir schwer, ssh ohne das Kennwort zu verwenden.

Ich habe eine ssh-copy-id gemacht und kann meinen Schlüssel in den .ssh / authorized_keys sehen.

Ich chmod 700 .ssh und chmod 600 alle Dateien in ./ssh/*

Wenn ich ein ssh -v mache, ist dies meine Ausgabe:

OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to wcmisdlin05 [10.52.208.224] port 22.
debug1: Connection established.
debug1: identity file /home/jsmith/.ssh/identity type -1
debug1: identity file /home/jsmith/.ssh/id_rsa type 1
debug1: identity file /home/jsmith/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
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: Host 'wcmisdlin05' is known and matches the RSA host key.
debug1: Found key in /home/jsmith/.ssh/known_hosts:9
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_501' not found

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_501' not found

debug1: Unspecified GSS failure.  Minor code may provide more information


debug1: Unspecified GSS failure.  Minor code may provide more information


debug1: Next authentication method: publickey
debug1: Offering public key: /home/jsmith/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/jsmith/.ssh/identity
debug1: Trying private key: /home/jsmith/.ssh/id_dsa
debug1: Next authentication method: password

Kann mir bitte jemand sagen, warum es auf diesem einen Remote-Computer nicht funktioniert?

JMS1969SF
quelle
5
Prüfen Sie /var/log/secure(wenn es sich um Berechtigungen handelt) und /var/log/messages(wenn es sich um SELinux handelt). Andernfalls besteht ein Konflikt zwischen dem Inhalt ~/.ssh/authorized_keysund dem Inhalt, der vom SSH-Client gesendet wird.
Aaron Copley

Antworten:

17

Ich habe oft einen ähnlichen Fehler auf CentOS 6-Rechnern mit ssh-copy-idund SELinux festgestellt.

Wenn ssh-copy-iddie Dateien mit autorisierten Schlüsseln erstellt werden, werden sie mit den richtigen Berechtigungen, jedoch mit der falschen SELinux-Bezeichnung erstellt. Das Update dafür ist das Wiederherstellen der Bezeichnungen auf ihre Richtlinienstandards mit dem folgenden Befehl:

restorecon -R ~/.ssh

Kenny Rasschaert
quelle
1
Gute Antwort. Für einen SELinux-Neuling wäre es aber auch interessant zu wissen, wie man die Liste und die Berechtigungen überprüft.
Zrajm
14

Diese Dinge lassen sich immer viel einfacher vom Server aus debuggen, wenn dies möglich ist. Wenn Sie eine SSHD auf einem anderen Port im Debug-Modus starten können, werden Sie sofort darüber informiert, warum der Schlüssel abgelehnt wird (ich vermute, dass Ihr Home-Verzeichnis gruppenbeschreibbar ist). Sie können beispielsweise eine SSHD im Debug-Modus auf Port 2222 mit starten /usr/sbin/sshd -d -p 2222und dann eine Verbindung mit herstellen ssh -p 2222 user@remotehost.

Eintopf
quelle
4
Vielen Dank für Ihre wilde Vermutung (Home-Verzeichnis ist Gruppe beschreibbar). Das war genau mein Fall.
Sergei Kurenkov
@skwllsp - Bitte akzeptieren Sie diese Antwort, wenn sie für Ihren Fall richtig ist.
Deer Hunter
1
@ Deer Hunter, Die Frage wurde von einer anderen Person gestellt, nicht von mir. Ich kann diese Antwort nicht akzeptieren.
Sergei Kurenkov,
@skwllsp - ein älterer Moment von mir, sorry.
Deer Hunter
chmod 744 in meinem Homeverzeichnis gelöst - es wurde auf diese Antwort bezogen, danke!
Brandt Solovij
3

Das Poster, das sich auf SElinux bezog, hat mir bei meinem Problem den Nagel auf den Kopf getroffen. Ich möchte Selinux nicht verwenden, hatte aber vergessen, es zu deaktivieren, und der Server hat Selinux beim Booten aktiviert.

ssh -vDebugging hat geholfen. Der Schlüssel wird akzeptiert:

debug1: Found key in /var/lib/amanda/.ssh/known_hosts:19
debug1: ssh_rsa_verify: signature correct

Und dann bekomme ich den Fehler

debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_502' not found

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_502' not found

debug1: Unspecified GSS failure.  Minor code may provide more information


debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_502' not found

Mein Fix war, Selinux mit auszuschalten setenforce 0und dann in / etc / selinux zu deaktivieren. Dann hat ssh passwordless login bei mir funktioniert.

Matt
quelle
1

Ich habe dies vor einiger Zeit auf RHEL5 erlebt (ich weiß nicht, ob dies die Distribution ist, die Sie verwenden) und festgestellt, dass dies nur der Fall war, als ich ssh-copy-id verwendet habe. Versuchen Sie, die Schlüsseldatei in den richtigen Ordner zu kopieren und natürlich die Berechtigungen zurückzusetzen

GeoSword
quelle
0

In meinem Fall lag das Problem im falschen authorized_keysDateiformat.

Es sollte kein Newline zwischen der Formatdefinition ( ssh-rss, ssh-dss, ..) und dem öffentlichen Schlüssel selbst.

helvete
quelle
0

Ich hatte früher Probleme mit ssh und Schlüsseldateien. Bei dieser Gelegenheit hat es id_rsageholfen , meinen ID - Schlüssel in " " umzubenennen. Leider habe ich unterschiedliche Schlüssel für unterschiedliche Server. Dieser Ansatz hat also einen begrenzten Nutzen. Es könnte als einmalig helfen.

Zweitens habe ich heute wieder diesen Fehler in nur einer XTerm-Sitzung und alles funktioniert hervorragend in 6 anderen XTerm-Sitzungen mit demselben Server / Schlauchgerät. Also habe ich meine Ergebnisse envin beiden Sitzungen verglichen . Ich fand, dass dies die Arbeitssitzung ist, die in der Nicht-Arbeitssitzung abwesend war:

SSH_AUTH_SOCK=/run/user/1001/keyring/ssh 

Ich habe diese Aufgabe in die nicht funktionierende Sitzung eingefügt:

export SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
ssh  user@host
... Welcome ...

Mit anderen Worten, diese Lösung hat bei mir funktioniert.

Ich habe ein wenig nach dem SSH_AUTH_SOCKET gesucht. Aus dieser Antwort:

Der Pfad des Unix-Dateisockets, den der Agent für die Kommunikation mit anderen Prozessen verwendet

Ich denke, dass dies für die Schlüsselauflösung basierend auf dem Ergebnis wesentlich ist.

werden
quelle
-1

debug1: Offering public key: /home/jsmith/.ssh/id_ rsa

...

debug1: Versuch eines privaten Schlüssels: /home/jsmith/.ssh/id_ dsa

Es scheint mir, dass private / öffentliche Schlüssel nur nicht übereinstimmen. Schlüsselnamen geben an, dass der öffentliche Schlüssel der RSA-Schlüssel und der private Schlüssel der DSA-Schlüssel ist.

Versuchen Sie, ein neues Paar und einen neuen scpöffentlichen Schlüssel für den Server zu generieren .

Gevial
quelle
Man kann überprüfen, ob dies tatsächlich der Fall ist, indem man die Fingerabdrücke der beiden Schlüssel mit ssh-keygen -l -f ~/.ssh/id_rsa' and ssh-keygen -l -f ~ / .ssh / id_rsa.pub` vergleicht. Ich glaube jedoch nicht, dass es die Schlüssel überhaupt anbieten würde, wenn es eine Nichtübereinstimmung gäbe. Ich denke, es ist nur so, dass einer vom Server aus einem noch nicht festgelegten Grund abgelehnt wird, also versucht er es mit einem anderen.
Eintopf am
-2

Ich empfehle, die Berechtigungen für ./ssh und das Home-Verzeichnis des Benutzers, für die Schlüsseldatei und für die Datei "authorized_keys" zu überprüfen, da niemand anderes als der Besitzer dort schreiben und lesen darf, wenn die Verbindung mit ssh ohne Passwort funktionieren soll. Dies betrifft sowohl Quell- als auch Zielcomputer. Um ehrlich zu sein, manchmal funktioniert es auch, wenn es größere Rechte gibt, aber es sollte nicht.

Alan
quelle
1
Bitte überprüfen Sie: serverfault.com/questions/464411/… . Ihr Beitrag ist auch überflüssig, da Sie nicht gelesen haben, was andere geschrieben haben.
Deer Hunter