Was bedeutet "key_load_public: keine solche Datei oder kein solches Verzeichnis"?


42

Ich habe nur ein PubkeyAuthenticationProblem behoben. Wenn ich den ausführlichen Modus verwende, sehe ich viel "key_load_public: keine solche Datei oder kein solches Verzeichnis" .

Offensichtlich werden die Schlüssel im Dateisystem beendet, so dass die Meldung keine übliche Bedeutung zu haben scheint:

$ ls -al ~/.ssh/id_*
-rw-------  1 jwalton  staff   751 Feb  4  2013 id_dsa
-rw-------  1 jwalton  staff   608 Feb 18  2015 id_dsa.pub
-rw-------  1 jwalton  staff   314 Feb  4  2013 id_ecdsa
-rw-------  1 jwalton  staff   180 Feb 18  2015 id_ecdsa.pub
-rw-------  1 jwalton  staff   464 Aug 23 18:15 id_ed25519
-rw-------  1 jwalton  staff   103 Aug 23 18:15 id_ed25519.pub
-rw-------  1 jwalton  staff  2546 Feb  4  2013 id_rsa
-rw-------  1 jwalton  staff   572 Feb 18  2015 id_rsa.pub

Was genau bedeutet "key_load_public: keine solche Datei oder kein solches Verzeichnis" ?


Meine .ssh/configDatei hat:

$ cat ~/.ssh/config
IdentityFile ~/.ssh/id_ed25519
IdentityFile ~/.ssh/id_ecdsa
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/id_rsa

Das Hinzufügen der *.pubErweiterung hat keine Auswirkung. Ich habe sowohl mit als auch ohne ausprobiert, *.pubda die Manpage nicht eindeutig ist, welcher Schlüssel angegeben werden muss - öffentlich oder privat. (Ein öffentlicher Schlüssel ist alles, was für eine Identität erforderlich ist. Ein privater Schlüssel ist erforderlich, um den Besitz des Schlüssels in einer Challenge / Response nachzuweisen.)

IdentityFile
    Specifies a file from which the user's DSA, ECDSA or DSA authen-
    tication identity is read...

$ ssh -v -p 1522 jwalton@192.168.1.11
OpenSSH_7.1p1, OpenSSL 1.0.2d 9 Jul 2015
debug1: Reading configuration data /Users/jwalton/.ssh/config
debug1: Reading configuration data /usr/local/etc/ssh_config
debug1: Connecting to 192.168.1.11 [192.168.1.11] port 1522.
debug1: Connection established.
debug1: identity file /Users/jwalton/.ssh/id_ed25519.pub type 4
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jwalton/.ssh/id_ed25519.pub-cert type -1
debug1: identity file /Users/jwalton/.ssh/id_ecdsa.pub type 3
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jwalton/.ssh/id_ecdsa.pub-cert type -1
debug1: identity file /Users/jwalton/.ssh/id_dsa.pub type 2
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jwalton/.ssh/id_dsa.pub-cert type -1
debug1: identity file /Users/jwalton/.ssh/id_rsa.pub type 1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jwalton/.ssh/id_rsa.pub-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.1
...

Antworten:


66

Es bedeutet wörtlich, was es sagt: Es gibt keine solche Datei oder Verzeichnis, auf die ssh zugreifen wollte.

Es handelt sich jedoch um die unten genannte Datei , nicht um die oben genannte. Sie haben nur die regulären öffentlichen Schlüssel, aber Sie haben nicht die SSH- Zertifikate dafür (vermutlich, weil Sie sie einfach nicht benötigen). OpenSSH versucht jedoch immer, die zugehörige .pub-certDatei für jeden Identitätsschlüssel zu laden .


Das Handbuch zu ssh-keygen (1) befasst sich mit dem Erstellen einer OpenSSH-Zertifizierungsstelle und dem Signieren von Zertifikaten, falls Sie interessiert sind. (Hinweis: Dies verwendet nicht X.509, sondern nur das OpenSSH-eigene Zertifikatformat.)

Normalerweise sind die Zertifikate nur dann nützlich, wenn Sie eine große Anzahl von Benutzern (und / oder Servern) haben, aber Kerberos nicht verwenden möchten.


Danke Grawity. Für IdentityFilewas soll ich angeben? Der öffentliche Schlüssel oder der private Schlüssel?
— Jww

Es sollte die private Schlüsseldatei sein (die tatsächlich das gesamte Schlüsselpaar enthält - die zusätzliche .pubDatei dient nur der Bequemlichkeit).
— Grawity

5
Ooph, das ist jetzt verwirrend. Jemand sollte wirklich einen Fehlerbericht einreichen :-(
— einpoklum - Monica

1
Wenn Sie mit "einen Fehlerbericht einreichen" "das Update einreichen" meinen, können Sie dies gerne tun: github.com/openssh/openssh-portable/blob/master/README#L38 :). Hier ist ein Ort zum Anschauen: github.com/openssh/openssh-portable/blob/master/key.c#L342 und github.com/openssh/openssh-portable/blob/master/ssh.c#L2091 .
— Alexander Bird

12
Manchmal bedeutet "Fehlerbericht" wörtlich "Fehlerbericht". Nicht jeder Benutzer von openssh ist ein C-Programmierer.
— Grawity
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.