Che cosa significa "key_load_public: nessun file o directory"?


42

Ho PubkeyAuthenticationrisolto un problema solo. Quando uso la modalità dettagliata, vedo molto "key_load_public: nessun file o directory" .

Ovviamente, le chiavi escono sul filesystem, quindi quel messaggio non sembra avere un significato abituale:

$ 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

Cosa significa esattamente "key_load_public: nessun file o directory" ?


Il mio .ssh/configfile ha:

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

L'aggiunta *.pubdell'estensione non ha alcun effetto. Ho provato sia con che senza *.pubperché la pagina man è ambigua rispetto a quale chiave deve essere specificata - pubblica o privata. (Una chiave pubica è tutto ciò che serve per un'identità; una chiave privata è necessaria per dimostrare la proprietà della chiave in una sfida / risposta):

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
...

Risposte:


66

Significa letteralmente quello che dice: non esiste un tale file o directory a cui ssh abbia voluto accedere.

Tuttavia, parla del file menzionato di seguito , non sopra. Hai solo le normali chiavi pubbliche, ma non hai i certificati SSH per loro (presumibilmente perché non ne hai bisogno). OpenSSH tenterà comunque sempre di caricare il .pub-certfile associato per ciascuna chiave di identità.


Il manuale ssh-keygen (1) parla della creazione di un'autorità di certificazione OpenSSH e della firma dei certificati, nel caso siate interessati. (Nota: questo non utilizza X.509, solo il formato cert di OpenSSH.)

Di solito i certificati sono utili solo se si dispone di un numero enorme di utenti (e / o server) ma non si desidera utilizzare Kerberos.


Grazie Grawity. Per IdentityFilecosa devo specificare? La chiave pubblica o la chiave privata?
JWW

Dovrebbe essere il file della chiave privata (che in realtà contiene l'intera coppia di chiavi - il .pubfile aggiuntivo è solo per [tipo di] comodità).
Grawity,

5
Ooph, ora è confuso. Qualcuno dovrebbe davvero presentare una segnalazione di bug :-(
einpoklum - ripristinare Monica

1
Se per "presentare una segnalazione di bug" intendi "invia la correzione", sentiti libero di farlo: github.com/openssh/openssh-portable/blob/master/README#L38 :). Ecco un punto per iniziare a cercare: github.com/openssh/openssh-portable/blob/master/key.c#L342 e github.com/openssh/openssh-portable/blob/master/ssh.c#L2091 .
Alexander Bird

12
A volte "segnalazione bug" significa letteralmente "segnalazione bug". Non tutti gli utenti di openssh sono programmatori C.
gravità
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.