Öffentlicher SSH-Schlüssel - Keine unterstützten Authentifizierungsmethoden verfügbar (Server hat öffentlichen Schlüssel gesendet)

80

Ich habe eine 12.10-Serverkonfiguration in einer virtuellen Maschine, deren Netzwerk auf Bridged eingestellt ist (im Wesentlichen wird dies als Computer angesehen, der mit meinem Switch verbunden ist).

Ich habe opensshd über installiert apt-getund konnte mich mit meinem Benutzernamen und Passwort über putty mit dem Server verbinden.

Ich machte mich dann daran zu versuchen, ihn dazu zu bringen, die Authentifizierung mit öffentlichen / privaten Schlüsseln zu verwenden. Ich habe folgendes gemacht:

  1. Generierte die Schlüssel mit PuttyGen.
  2. Verschob den öffentlichen Schlüssel nach /etc/ssh/myusername/authorized_keys(ich verwende verschlüsselte Home-Verzeichnisse).
  3. Richten Sie sshd_configwie folgt ein:

    PubkeyAuthentication yes
    AuthorizedKeysFile /etc/ssh/%u/authorized_keys
    StrictModes no
    PasswordAuthentication no
    UsePAM yes
    

Wenn ich eine Verbindung über Putty oder WinSCP herstelle, wird die Fehlermeldung "Keine unterstützten Authentifizierungsmethoden verfügbar" angezeigt (Server hat öffentlichen Schlüssel gesendet).

Wenn ich mich sshdim Debug-Modus befinde, sehe ich:

PAM: initializing for "username"
PAM: setting PAM_RHOST to "192.168.1.7"
PAM: setting PAM_TTY to "ssh"
userauth-request for user username service ssh-connection method publickey [preauth]
attempt 1 failures 0 [preauth]
test whether pkalg/pkblob are acceptable [preauth[
Checking blacklist file /usr/share/ssh/blacklist.RSA-1023
Checking blacklist file /etc/ssh/blacklist.RSA-1023
temporarily_use_uid: 1000/1000 (e=0/0)
trying public key file /etc/ssh/username/authorized_keys
fd4 clearing O_NONBLOCK
restore_uid: 0/0
Failed publickey for username from 192.168.1.7 port 14343 ssh2
Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth]
do_cleanup [preauth]
monitor_read_log: child log fd closed
do_cleanup
PAM: cleanup

Warum passiert das und wie kann ich das beheben?

F21
quelle
In meinem Fall habe ich zwei AWS-Instanzen. Einer von ihnen funktioniert einwandfrei, der andere funktioniert, wenn eine Verbindung über Intellij Idea hergestellt wird, aber nicht über Putty, aber es hat am Anfang funktioniert. In meinem Fall muss es also um Kitt gehen
Marian Klühspies,

Antworten:

70

Problem gelöst:

Anscheinend ist ein Problem mit meiner öffentlichen Schlüsseldatei aufgetreten. PuttyGen erstellt eine öffentliche Schlüsseldatei, die wie folgt aussieht:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20121022"
AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu
a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH
tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u
vObrJe8=
---- END SSH2 PUBLIC KEY ----

Dies funktioniert jedoch nicht. Sie müssen also den Schlüssel in PuttyGen öffnen und von dort kopieren (dies führt dazu, dass der Schlüssel das richtige Format und eine Zeile aufweist):

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022

Fügen Sie dies ein, authorized_keysdann sollte es funktionieren.

F21
quelle
1
Ich öffnete authorized_keysin vi und entfernte alle Zeilenumbrüche und es funktionierte.
Luke
1
Wo befindet sich die öffentliche Schlüsseldatei? Ich benutze nur Kitt.
Syler
1
Ich habe alle oben genannten Dinge getan, aber der Server sendet immer noch Keine unterstützten Authentifizierungsmethoden verfügbar (Server hat öffentlichen Schlüssel gesendet)
Al-Alamin
Woher wusstest du, dass dies nicht funktionieren würde / wo hast du das erwartete Format gefunden?
Michael
Wo muss ich genau einfügen, wenn Sie sagen "Fügen Sie dies in authorized_keys, dann sollte es funktionieren." @ F21
Mahender Reddy Yasa
20
  1. Bearbeiten Sie die /etc/ssh/sshd_configDatei.
  2. Ändern PasswordAuthenticationund ChallengeResponseAuthenticationzu yes.

3a. Starten Sie ssh neu /etc/init.d/ssh restart.
ODER
3b. besser du verwendestservice sshd restart

Jäger
quelle
Dies ist in der Tat ein nützlicher Kommentar, wenn Sie Probleme beim Verbinden der FTP-Software haben
cnu
Das ist für mich in Ordnung!
Asinox
8
Der ganze Zweck über Schlüsseldatei zur Authentifizierung ist zu vermeiden Passwort - Authentifizierung, also eigentlich sollten Sie setzen PasswordAuthenticationauf no.
Pere
Es ist die einzige Antwort, die mir geholfen hat. Ich brauchte keine Authentifizierung mit öffentlichem / privatem Schlüssel, aber ich bekam diese seltsame Nachricht.
Serge Rogatch
Vielen Dank ChallengeResponseAuthentication, es hat das Problem auf einem Debian 10.0
Realtebo vom
10

Nur ein Tipp, von dem ich hoffe, dass er jemand anderem bei den Kopfschmerzen hilft, die ich hatte. F21 ist richtig, dass Sie den Schlüssel aus dem PuTTYGen-Fenster kopieren müssen, anstatt die Datei zu speichern. Nach dem Kopieren kann die Art des Einfügens jedoch erhebliche Auswirkungen darauf haben, ob Ihr Schlüssel funktioniert oder nicht. Einige Editoren ändern den Text beim Einfügen oder machen etwas mit Zeilenumbrüchen oder etwas, das die authorized_keys-Datei ungültig macht.

Was ich als am wenigsten anfällig empfunden habe, ist das Echo der gesamten Zeichenfolge und die Umleitung der Ausgabe in die Datei. Wenn Sie mit der rechten Maustaste auf PuTTY klicken, um die Schlüsselzeichenfolge in die Befehlszeile einzufügen, sieht dies folgendermaßen aus (im obigen Beispiel):

echo [right-click-to-paste-here] > /etc/ssh/username/authorized_keys

Sie werden am Ende mit diesem:

echo ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022 > /etc/ssh/username/authorized_keys

Ein weiterer Vorteil dieser Methode ist, dass Sie auf diese Weise mehrere Schlüssel hinzufügen können, indem Sie >> zum Anhängen anstelle von> zum Überschreiben verwenden. Beispiel:

echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username

Hoffe das hilft jemandem.

Dave
quelle
Dies funktioniert nicht mit 4096-Bit-Schlüsseln ... es überschreitet das Terminal-Limit für Zeichen, denke ich
Freedo
1
Möglicherweise ist es keine gute Idee, dies anschließend aus Ihrem Bash-Verlauf zu entfernen.
Jason Powers Murray
@JasonPowersMurray: Es ist ein öffentlicher Schlüssel. Das Kryptografiesystem für öffentliche Schlüssel ist so konzipiert, dass es beim Veröffentlichen des Schlüssels sicher bleibt. Daher können öffentliche Schlüssel im Bash-Verlauf und an anderer Stelle protokolliert werden.
David Cary
9

Wir haben bereits den richtigen Schlüsseltyp verwendet (ppk statt pem).

In unserem Fall war es ein Problem mit den Dateiberechtigungen für authorized_keys im Serverbenutzerordner. Es muss -rw-r - r-- sein ... Es war -rw-rw-r--

ssh ist sehr pingelig in Bezug auf Datei-Perms.

Scharade
quelle
Vielen Dank, dass Sie mich in die richtige Richtung gelenkt haben. In unserem Fall waren sowohl der Eigentümer als auch die Berechtigungen falsch.
Zsolti
Wie ändere ich Dateiberechtigungen, da ich nicht über ssh zugreifen kann? Wie kann man das anders machen?
jit
1
Meins war auch ein Besitz-, Gruppen- und Berechtigungsproblem. Wie hier gezeigt ( stackoverflow.com/a/36808935/384670 ), waren die Berechtigungen, die ich verwenden musste, 600 für die Datei und 700 für das Verzeichnis. Ich habe auch den Besitzer und die Gruppe in diesen fraglichen Nicht-Root-Benutzer geändert.
M Katz
5

Gelöst:

  1. Sie müssen den puttyGEN herunterladen und einen öffentlichen und einen privaten Schlüssel generieren.
  2. Ich habe meinem privaten Schlüssel ein Passwort zugewiesen.
  3. Konfigurieren Sie dann den privaten Schlüssel in Putty. Putty-> SSH-> Auth-> Navigieren Sie zu Ihrem privaten.
  4. Stellen Sie sicher, dass Sie für den privaten und den öffentlichen Schlüssel denselben Pfad verwenden.
  5. Sie müssen den öffentlichen Schlüssel auf dem Server konfigurieren. (In meinem Fall habe ich mit dem Server gesprochen und gefragt, ob er meinen öffentlichen Schlüssel zum Server hinzufügen kann.) Sie benötigen den öffentlichen Schlüssel auf der anderen Seite (Server) der Verbindung.
Matt.sinner
quelle
2
Msgstr "Stellen Sie sicher, dass Sie für den privaten und den öffentlichen Schlüssel denselben Pfad verwenden." Das hat damit nichts zu tun. Sie müssen Ihren öffentlichen Schlüssel nicht neben Ihrem privaten Schlüssel
ablegen
5

In meinem Fall lag der Grund darin, dass die private Schlüsseldatei (.ppk) im Putty-Authentifizierungsagenten, z. B. Pageant, entfernt wurde. Ich habe es gerade wieder auf Pageant aktualisiert und die Verbindung hat danach einwandfrei funktioniert.

Marko H
quelle