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 [email protected]
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
...
jww
quelle

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.

Grawity
quelle
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