SSH-Authentifizierung mit öffentlichem Schlüssel funktioniert nicht [closed]

41

Auf meinem Server läuft CentOS 5.3. Ich bin auf einem Mac mit Leopard. Ich weiß nicht, wer dafür verantwortlich ist:

Ich kann mich problemlos über die Kennwortauthentifizierung bei meinem Server anmelden. Ich habe alle Schritte zum Einrichten von PKA durchlaufen (wie unter http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-ssh-beyondshell.html beschrieben ), aber wann Ich benutze SSH, es weigert sich sogar, eine öffentliche Überprüfung zu versuchen. Befehl verwenden

ssh -vvv user@host

(wobei -vvv die Ausführlichkeit auf das maximale Niveau erhöht) Ich erhalte die folgende relevante Ausgabe:

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred keyboard-interactive,password
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

gefolgt von einer Eingabeaufforderung für mein Passwort. Wenn ich versuche, das Problem mit zu erzwingen

ssh -vvv -o PreferredAuthentications=publickey user@host

Ich bekomme

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred publickey
debug3: authmethod_lookup publickey
debug3: No more authentication methods to try.

Obwohl der Server angibt, die Authentifizierungsmethode publickey zu akzeptieren und mein SSH-Client darauf besteht, wird dies zurückgewiesen. (Beachten Sie das auffällige Fehlen der Zeile "Offering Public Key:" oben.) Haben Sie Vorschläge?


quelle
benutze einfach "ssh -v" du brauchst nicht mehr ausführlichkeit und
beziehe
Diese Frage wird geschlossen, da sie nicht mehr beantwortet werden kann und Antworten von geringer Qualität liefert.
HopelessN00b

Antworten:

44

Überprüfen Sie, ob Ihre Centos-Maschine Folgendes hat:

RSAAuthentication yes
PubkeyAuthentication yes

in sshd_config

und stellen Sie sicher, dass Sie im ~ / .ssh / -Verzeichnis des Centos-Computers über die entsprechenden Berechtigungen verfügen.

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*

sollte den Trick machen.

Pyhimys
quelle
1
Die richtigen Rechte und Dateinamen (manchmal authorized_keys2, manchmal ohne die 2) sind sehr wichtig!
brandstaetter
4
Die Erlaubnis der Datei authorized_keys ist ein sehr wichtiger Hinweis. Vielen Dank.
Kane
7
Möglicherweise müssen Sie auch, chmod go-w ~/wenn es nicht schon so ist.
Tylerl
1
Überprüfen Sie auch, ob Ihr Heimverzeichnis auf dem Remote-Server über Berechtigungen verfügt 755(wie Jinyu Liu unten erwähnt)
Attila Fulop
1
In anderen Betriebssystemen könnte die SSH-Konfigurationsdatei auch unter folgender /etc/ssh/ssh_config
Yoshua Wuyts
17

Ich hatte ein ähnliches Problem: Der Remote-PC konnte die Authentifizierung mit öffentlichem Schlüssel nicht verwenden, um sich beim CentOs 6-Server anzumelden. Das Problem in meinem Fall betraf SELinux - das Ausgangsverzeichnis des Benutzers, der sich anmeldete, hatte Sicherheitskontexte für Meldungen. Ich habe dieses restoreconProblem gelöst, indem ich das Tool folgendermaßen verwendete:

restorecon -Rv /home
Gareth
quelle
2
Danke, Gareth! "restorecon -Rv /root/.ssh" hat den Trick gut gemacht.
Tbroberg
Zur weiteren Erläuterung: Dieser Befehl weist SELinux an, die SELinux-Tags für Dateien auf die Werte zurückzusetzen, für die /homesie normalerweise im Verzeichnislayout enthalten sind /home.
Rakslice
Wenn du dich als root restorecon -Rv /root
anmeldest
13

1- Überprüfen Sie Ihre / etc / ssh / sshd_config

RSAAuthentication ja
PubkeyAuthentication ja

2- Überprüfen Sie das Sicherheitsprotokoll auf dem Remotecomputer und überprüfen Sie das detaillierte Fehlerprotokoll des sshd-Dämons. zB in meinem Ubuntu

# grep 'sshd' / var / log / secure | grep 'Authentifizierung abgelehnt' | Schwanz -5
4. August 06:20:22 xxx sshd [16860]: Authentifizierung abgelehnt: Falscher Besitz oder Modi für Verzeichnis / home / xxx
4. August 06:20:22 xxx sshd [16860]: Authentifizierung abgelehnt: Falscher Besitz oder Modi für Verzeichnis / home / xxx
4. August 06:21:21 xxx sshd [17028]: Authentifizierung abgelehnt: Falscher Besitz oder Modi für Verzeichnis / home / xxx
4. August 06:21:21 xxx sshd [17028]: Authentifizierung abgelehnt: Falscher Besitz oder Modi für Verzeichnis / home / xxx
4. August 06:27:39 xxx sshd [20362]: Authentifizierung abgelehnt: Falscher Besitz oder Modi für Verzeichnis / home / xxx

Überprüfen Sie dann den Besitz und die Modi für das Verzeichnis / home / xxx. Möglicherweise müssen Sie dies ausführen

chmod 755 / home / xxx
Jinyu Liu
quelle
1
Das Überprüfen der Protokolldatei des Systems ist ein sehr wichtiger Hinweis.
Kane
1
Die Home Directory Perms von 755 haben mir geholfen - unbedingt erforderlich!
Ben
11

Stellen Sie sicher, dass Ihre Berechtigungen korrekt sind und die Dateistruktur (insbesondere die Schreibweise) für lokale und Remote-Computer korrekt ist. Die URL, auf die Sie verweisen, gibt alle an, aber es lohnt sich zu überprüfen, ob Ihre Übereinstimmungen vorliegen. Normalerweise verursachen Berechtigungen jedoch einen relevanten Fehler.

Haben Sie überprüft, ob das Kontrollkästchen sshd_config auf Ihrem CentOS 5.3 so eingestellt ist, dass PubkeyAuthentication oder RSAAuthentication zulässig sind?

Überprüfen Sie die SSH-Serverprotokolle auf dem CentOS-System. Möglicherweise werden weitere Informationen bereitgestellt. Ich bin mir nicht sicher, ob CentOS den auf der Blacklist stehenden SSH-Schlüssel überprüft, aber ich habe ssh publickey-Ablehnungen gesehen, die in Bezug auf die -vvv-Ausgabe relativ leise sind, aber die Protokolle haben ziemlich klar erklärt, was los war

Daniel Lawson
quelle
7

Verstanden! Es stellte sich heraus, dass es sich um ein clientseitiges Problem handelte. (Ich denke, dass ein serverseitiges Problem zu einer nützlicheren Debug-Ausgabe geführt hätte.) Aus mir unbekannten Gründen hatte die Datei / etc / ssh_config auf meinem Mac die Zeile

PubkeyAuthentication = no

Ich habe diese eine Zeile auskommentiert und jetzt funktioniert alles gut.


quelle
4

Stellen Sie neben den Modi für Dateien / Verzeichnisse sicher, dass der Eigentümer korrekt ist! Ein Benutzer muss sein eigenes Basisverzeichnis (.ssh /) und die darin enthaltenen Dateien besitzen.

Ich musste rennen chown -R $user:$user /home/$user, um meine SSH-Fehler zu überwinden.

Visser
quelle
+1, auf einem meiner Systeme waren die Berechtigungen für .ssh richtig, aber jemand hatte das Home-Verzeichnis 777 des Kontos erstellt.
GargantuChet
2

Überprüfen Sie auch, ob ein Schlüssel automatisch bereitgestellt werden kann oder nicht, verwenden Sie -i path / to / key, wenn dies nicht der Fall ist oder nur zum Testen

Jimsmithkka
quelle
2

Klingt für mich nach einem Konfigurationsproblem. Wie Daniel vorschlug, sollten zwei Dinge überprüft werden:

  1. Die eingegebenen SSH-Schlüssel $HOME/.ssh/authorized_keyssind lesbar. und
  2. SSHd ist so konfiguriert, dass eine Anmeldung mit öffentlichem Schlüssel möglich ist.
Sybreon
quelle
2

Überprüfen Sie den Benutzernamen, mit dem Sie sich anmelden möchten. Standardmäßig ist dies Ihr Benutzername auf dem lokalen Computer.

Creotiv
quelle
1

Die Ausgabe des Clients wie in ssh -vzeigt an, dass an einem bestimmten Punkt im Protokoll ein Problem vorliegt, der Client jedoch nicht über die Ursache informiert wird, wenn es auf etwas auf dem Server zurückzuführen ist. Überprüfen Sie die Server-Protokolldateien, um herauszufinden, was nicht stimmt. Sie müssen wahrscheinlich sein, rootum über die entsprechenden Berechtigungen zu verfügen. Bei einer sshdKonfiguration zum Anmelden bei syslog finden Sie die Nachrichten möglicherweise in /var/log/secure. Wie diese:

Authentication refused: bad ownership or modes for directory /home/you/.ssh
Authentication refused: bad ownership or modes for file /home/you/.ssh/authorized_keys

Der Grund war in diesem Fall ein (dummer) Ausfall defaultvon 0002. Das heißt, Schreibzugriff für die Gruppe. (Gruppenname = Benutzername, aber dennoch.) Der SSH-Daemon vertraut keinen Dateien, die von anderen als dem Benutzer manipuliert werden können (und rootnatürlich auch nicht). Sie können das Problem mit lösen chmod.

chmod 700 ~/.ssh # solve the issue
chmod 720 ~/.ssh # reproduce the issue
# or similar for a file
Lumi
quelle
1

Ich war gerade in dem gleichen Problem gefangen, mit Fedora Core 16 auf Cent 5.5 zuzugreifen

Die Protokolle und die ausführliche Beschreibung sahen genauso aus

Das Problem war, dass der öffentliche Schlüssel gefälschte Daten erhalten, neu generiert und im SSHD-Server abgelegt hat. SSHD-Client sendet die Schlüsselinformationen, wird jedoch vom Server nicht erkannt (entspricht keinem der Schlüssel in Authorized Keys).

Freaktor
quelle
-2

Ein weiterer davon gebissen. Nach langer Suche stellte sich heraus, dass ich explizit den öffentlichen Schlüssel (mit der Option -i) anstelle des privaten Schlüssels ssh eingab. Doh!

Ellert van Koperen
quelle