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?
/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_keys
und dem Inhalt, der vom SSH-Client gesendet wird.Antworten:
Ich habe oft einen ähnlichen Fehler auf CentOS 6-Rechnern mit
ssh-copy-id
und SELinux festgestellt.Wenn
ssh-copy-id
die 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
quelle
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 2222
und dann eine Verbindung mit herstellenssh -p 2222 user@remotehost
.quelle
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 -v
Debugging hat geholfen. Der Schlüssel wird akzeptiert:Und dann bekomme ich den Fehler
Mein Fix war, Selinux mit auszuschalten
setenforce 0
und dann in / etc / selinux zu deaktivieren. Dann hat ssh passwordless login bei mir funktioniert.quelle
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
quelle
In meinem Fall lag das Problem im falschen
authorized_keys
Dateiformat.Es sollte kein Newline zwischen der Formatdefinition (
ssh-rss
,ssh-dss
, ..) und dem öffentlichen Schlüssel selbst.quelle
Ich hatte früher Probleme mit ssh und Schlüsseldateien. Bei dieser Gelegenheit hat es
id_rsa
geholfen , 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
env
in beiden Sitzungen verglichen . Ich fand, dass dies die Arbeitssitzung ist, die in der Nicht-Arbeitssitzung abwesend war:Ich habe diese Aufgabe in die nicht funktionierende Sitzung eingefügt:
Mit anderen Worten, diese Lösung hat bei mir funktioniert.
Ich habe ein wenig nach dem SSH_AUTH_SOCKET gesucht. Aus dieser Antwort:
Ich denke, dass dies für die Schlüsselauflösung basierend auf dem Ergebnis wesentlich ist.
quelle
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 .quelle
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.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.
quelle