ssh erlaubt keine öffentliche Schlüsselauthentifizierung mehr

22

Mein Computer hat kürzlich aufgehört, eingehende Authentifizierung mit öffentlichem Schlüssel zu akzeptieren. Ich habe einen Ubuntu 11.04-Desktop, in den ich von einem Windows-Computer aus einspringe. Ich benutze Kitt mit Festzug. Ich kann eine Verbindung nur mit der interaktiven Kennwortauthentifizierung herstellen, nicht mit meinem RSA-Schlüssel, den ich eingerichtet habe.

Ich habe bereits überprüft, ob der Schlüssel in ~ / .ssh / authorized_keys aufgeführt ist. Wie behebe ich das und was überprüfe ich?

Andrew Redd
quelle
2
Prüfen Sie zunächst , dass alle drei ~, ~/.sshund ~/.ssh/authorized_keysnur von Ihnen beschreibbar sind (insbesondere keine Gruppe Schreibberechtigung). Suchen Sie /var/log/auth.lognach Protokolleinträgen, die zum Zeitpunkt Ihrer Anmeldeversuche erstellt wurden. Kopieren Sie sie und fügen Sie sie in Ihre Frage ein (wenn Sie möchten, können Sie die Namen aus Datenschutzgründen ändern). Überprüfen Sie auch, ob das Problem ausschließlich auf dem Server liegt oder nicht: Kopieren Sie den privaten Schlüssel auf den Linux-Computer (Sie müssen die private Schlüsseldatei von PuTTY in das OpenSSH-Format konvertieren) und prüfen Sie, ob dies ssh localhostfunktioniert.
Gilles 'SO - hör auf böse zu sein'
Mein Home-Verzeichnis war aus irgendeinem Grund beschreibbar. Das hat es behoben. Stellen Sie es als Antwort, damit ich es akzeptieren kann.
Andrew Redd

Antworten:

28

Wenn die Authentifizierung mit öffentlichem Schlüssel nicht funktioniert: Stellen Sie sicher, dass Ihr Ausgangsverzeichnis ( ~), das ~/.sshVerzeichnis und die ~/.ssh/authorized_keysDatei auf der Serverseite nur von ihrem Eigentümer beschreibbar sind . Insbesondere darf keiner von ihnen von der Gruppe beschreibbar sein (auch wenn der Benutzer alleine in der Gruppe ist). chmod 755oder chmod 700ist ok, chmod 770ist nicht.

Was ist zu überprüfen, wenn etwas nicht stimmt?

  • Führen Sie ssh -vvvdas Programm aus , um viele Debugging-Ausgaben zu sehen. Wenn Sie eine Frage stellen, warum Sie keine Verbindung zu ssh herstellen können, fügen Sie diese Ausgabe hinzu (Sie möchten möglicherweise Host- und Benutzernamen anonymisieren).
  • Wenn Sie können, überprüfen Sie die Server-Anmeldungen /var/log/auth.log.
  • Wenn die Authentifizierung mit öffentlichen Schlüsseln nicht funktioniert, überprüfen Sie die Berechtigungen erneut, insbesondere das Gruppenbit (siehe oben).
Gilles 'SO - hör auf böse zu sein'
quelle
(aus dem U & L-Tag-Wiki , kopiert in AU )
Gilles 'SO - hör auf, böse zu sein'
1
Gute Antwort! Ich habe mein Homedir vergessen: o
RobAu
Wenn Sie die neueste Version von ssh (oder sshd) ausführen, werden DSA-Schlüssel aufgrund von Sicherheitsproblemen standardmäßig nicht mehr unterstützt. Die einzige echte Lösung besteht darin, ein Upgrade auf RSA- oder bessere Schlüssel durchzuführen.
Mikko Rantalainen
Ich habe die Berechtigungen meines Home-Ordners geändert und was? Ich wurde von SSH ausgeschlossen! Ich habe die SSH-Schlüssel geändert, nein, der Server lehnt die Verbindung immer noch ab! Ich war verrückt nach einer Lösung und mit deiner Antwort von chmod 700 in meinem Home-Ordner begann ssh zu arbeiten !!!!!!! Vielen Dank! Wenn meine Terminalverbindung unterbrochen würde, während ich nach einer Lösung suchte, wäre ich vollständig vom Server ausgeschlossen. Achten Sie also darauf, nicht mit den Berechtigungen Ihres privaten Ordners zu spielen! (Ich habe gerade meine Home-Ordner-Berechtigungen geändert, nicht den .ssh-Ordner, aber immer noch von SSH gesperrt)
Tarik
9

Ich traf auf dasselbe und stellte schließlich fest, dass es daran lag, dass ich mein Home-Verzeichnis verschlüsselt hatte. SSH kann die Datei "authorized_keys" erst lesen, wenn Sie sich angemeldet haben. Daher müssen Sie sich zunächst mit einem Kennwort authentifizieren. Weitere Informationen zum verschlüsselten Basisverzeichnis finden Sie im Abschnitt über den folgenden Link:

https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Encrypted_Home_Directory

Willie Wheeler
quelle
5

Wenn Sie die Berechtigungen für die Verzeichnisse überprüfen und ein "." Direkt danach haben Sie möglicherweise Selinux aktiviert, was den Schlüsselaustausch und die manuelle Kennwortidentifizierung beeinträchtigt.

Sie können SELinux deaktivieren, um Fehler zu beheben, indem Sie die folgenden Anweisungen befolgen: http://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.html oder einfach die Datei / etc bearbeiten / selinux / config und ändere es von "erzwingen" auf "deaktiviert".

Hoffe das hilft.

tweekd
quelle
Ich hatte Selinux aktiviert, aber das Deaktivieren schien es nicht zu beheben. Was hat der Trick für mich war chmod 600 ~/.ssh/authorized_keys- die Datei war gruppenbeschreibbar. (via pyrosoft.co.uk/blog/2013/01/12/… )
David Carboni
Das hat mir geholfen! Vielen Dank!
907.
Sie sollten auch in der Lage sein, die SSH-Authentifizierung für SELinux zu aktivieren, indem Sie die richtigen SELinux-Kontexte festlegen. Das Wiederherstellen der vom System konfigurierten Kontexte in Ihrem restorecon ~ -RAusgangsverzeichnis ( ) ist ein guter Ausgangspunkt.
Josh Kelley
4

Ich würde sicherstellen, dass Sie Ihre Einstellungen in / etc / ssh / sshd_config korrekt haben.

Um nur die Verwendung von PKI zu erzwingen und Passwörter zu verbieten, suchen Sie die Zeile

#PasswordAuthentication yes 

Kommentieren Sie es in Ihrer Datei aus und setzen Sie es auf

PasswordAuthenticate no

Ich würde auch die Balance der Einstellungen durchlesen, um sicherzustellen, dass sie sinnvoll sind. Stellen Sie insbesondere sicher, dass Sie RSA-Schlüssel verwenden, da bekannt ist, dass DSA gefährdet ist.

cmdematos
quelle
11
Sie erklären, wie Sie die Kennwortauthentifizierung deaktivieren. Dies wird nicht dazu beitragen, dass die Authentifizierung mit öffentlichem Schlüssel funktioniert (der öffentliche Schlüssel wird zuerst versucht). Andrew: Deaktivieren Sie die Kennwortauthentifizierung erst, wenn Sie sicher sind, dass die Authentifizierung mit öffentlichen Schlüsseln funktioniert!
Gilles 'SO- hör auf böse zu sein'
2

Eine mögliche Ursache für das Problem ist, dass Sie DSA-Schlüssel haben, SSH jedoch (anscheinend) standardmäßig RSA-Schlüssel benötigt. Ich habe das Problem beim Upgrade auf 16.04. Sie können hier mehr sehen , aber die kurze Antwort lautet ~/.ssh/config:

PubkeyAcceptedKeyTypes ssh-dss
DeegC
quelle
1

Ich habe dieses Problem behoben, indem ich "PasswordAuthentication yes" in / etc / ssh / sshd_config auskommentiert habe.

Ben Ernest
quelle
1

Aufgrund einer Notwendigkeit zur Fehlerbehebung bei der Kommunikation zwischen zwei verschiedenen Computern hatte ich ~/.sshauf der Clientseite zwei private Schlüssel .

Anstatt jeden Server-Host mit dem entsprechenden privaten Schlüssel zu konfigurieren, ~/.ssh/identitywie ich es hätte tun sollen, hatte ich den sekundären (und in diesem Fall falschen) Schlüssel für alle Hosts konfiguriert:

Host *
IdentityFile ~/.ssh/identity_b

Durch die Korrektur wurde ~/.ssh/identitydas Problem behoben:

Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b
Uli Klumpp
quelle
0

Ich hatte nur das gleiche Problem, aber das Ändern der Berechtigungen mit hat chmodnicht geholfen, da sich herausstellte, dass ich nicht im Besitz der ~/.ssh/authorized_keysDatei war. Sie können den Besitz des .sshVerzeichnisses ändern mit:

sudo chown -R "$USER" ~/.ssh
Nick
quelle
-1

Irgendwie hat das bei mir geklappt:

root @ kaiser: ~ # vim / etc / ssh / sshd_config

Ändern Sie diese Zeile von Ja in Nein. 28 StrictModes Nein

Versuch es noch einmal

sysadmin @ suselinux1: ~> con sysadmin kaiser Willkommen bei Ubuntu 12.04.1 LTS (GNU / Linux 3.2.0-25-generic i686)

Letzte Anmeldung: Fr 9.11. 15:40:11 2012 von 10.1.3.25 Uhr sysadmin @ kaiser: ~ $ Datum vie 9.11

theunbekanntshadow
quelle
3
Etwas zu tun, ohne zu wissen, was es tut und warum es funktioniert, mag akzeptabel sein, aber es ist schlecht, und um fair zu sein, schlimmer, wenn es sich um ein Sicherheitssystem handelt.
Mahesh
2
einverstanden. Lassen Sie dies Ansporn sein, bessere sshdDokumente zu erstellen , die nicht genau in die Kategorie "Lesen am schönen Samstag" fallen
code_monk