46 votes

Que signifie "key_load_public : no such file or directory" ?

J'ai dépanné un PubkeyAuthentication -Le problème ne se pose qu'à l'échelle de l'Union européenne. Lorsque j'utilise le mode verbeux, je vois beaucoup de "key_load_public : no such file or directory" .

De toute évidence, les clés se terminent sur le système de fichiers, de sorte que ce message ne semble pas avoir de signification habituelle :

$ 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

Qu'est-ce que cela signifie exactement ? "key_load_public : no such file or directory" signifier ?


Mon .ssh/config a :

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

Ajouter le *.pub n'a aucun effet. J'ai essayé avec et sans *.pub car la page de manuel est ambiguë quant à la clé à spécifier - publique ou privée. (Une clé publique est tout ce qui est nécessaire pour une identité ; une clé privée est nécessaire pour prouver la propriété de la clé dans un défi/réponse) :

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

72voto

James Mertz Points 390

Il signifie littéralement ce qu'il dit : il n'y a pas de fichier ou de répertoire auquel ssh voulait accéder.

Cependant, il est question du fichier mentionné ci-dessous et non au-dessus. Vous n'avez que les clés publiques ordinaires, mais vous n'avez pas les clés SSH certificats pour eux (probablement parce que vous n'en avez pas besoin). OpenSSH, cependant, essaiera toujours de charger le fichier .pub-cert pour chaque clé d'identité.


Le manuel ssh-keygen(1) traite de la création d'une autorité de certification OpenSSH et de la signature de certificats, si cela vous intéresse. (Note : ceci n'utilise pas X.509, seulement le format de certificat propre à OpenSSH).

En général, les certificats ne sont utiles que si vous avez un grand nombre d'utilisateurs (et/ou de serveurs) mais que vous ne voulez pas utiliser Kerberos.

0voto

Dans mon cas, j'ai essayé de cloner un projet gitlab, mais la solution devrait fonctionner pour n'importe quel service git. L'erreur était

#15 0.589 debug1: identity file /root/.ssh/id_rsa type -1, 
#15 0.589 debug1: key_load_public: No such file or directory

Il a disparu après l'utilisation de

echo "Host *\n  User git\n  HostName gitlab.com\n  AddKeysToAgent yes\n  IdentityFile /root/.ssh/id_rsa" >> /etc/ssh/ssh_config

C'est également ce qui est demandé dans votre bloc de messages :

debug1: Reading configuration data /etc/ssh/ssh_config
...
debug1: key_load_public: No such file or directory

La solution prouve que ssh doit vérifier que le serveur est un hôte connu. Si vous n'avez pas assigné l'hôte connu nécessaire, le serveur gitlab n'est pas de confiance, ce qui est signifié par the key_load_public cannot be found . Oui, le message d'erreur est déroutant.

Vous pouvez également remplir manuellement ce ssh_config sans l'option echo Bien entendu, il s'agit d'un commandement.

Je viens de voir qu'il s'agissait également de la solution sur Défaut du serveur .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X