web-dev-qa-db-fra.com

key_load_public: format non valide

J'ai utilisé PuTTY Key Generator pour générer une clé RSA-2 de 4096 bits avec une phrase secrète.

Je sauve le .ppk et une clef publique de format OpenSSL. La clé publique au format PuTTY ne fonctionne pas.

En tout cas, mon erreur est la suivante:

$ ssh -T [email protected]
key_load_public: invalid format
Enter passphrase for key '/c/Users/Dan/.ssh/id_rsa':
Hi Dan! You've successfully authenticated, but GitHub does not provide Shell access.

Quel est le problème?

J'utilise Pageant pour charger les clés et j'utilise Git Bash pour essayer la connexion SSH. J'ai également chargé la clé dans GitHub, sans savoir ce que je fais de travers.

J'ai essayé d'ajouter une nouvelle ligne et non d'ajouter une nouvelle ligne dans GitHub

43
JordanGS

Comme Roland mentionné dans leur réponse, c'est un avertissement que le ssh-agent ne comprend pas le format de la clé publique et que même dans ce cas, la clé publique ne sera pas utilisée localement.

Cependant, je peux aussi expliquer pourquoi cet avertissement existe. Cela se résume simplement au fait que le générateur de clés PuTTY génère deux formats de clé publique différents en fonction de ce que vous faites dans le programme.

Note: Tout au long de mon explication, les fichiers de clé que j'utiliserai/générerai seront nommés id_rsa avec leurs extensions appropriées. De plus, pour faciliter le copier-coller, le dossier parent des clés sera supposé être ~/.ssh/. Ajustez ces détails en fonction de vos besoins.

Les formats

Lien vers la documentation PuTTY correspondante

SSH-2

Lorsque vous enregistrez une clé à l'aide du générateur de clés PuTTY à l'aide du bouton "Enregistrer la clé publique", elle sera enregistrée dans le format défini par RFC 4716 .

Exemple:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "github-example-key"
AAAAB3NzaC1yc2EAAAABJQAAAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYF
i2fSBrsGcmqeb5EwgnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcp
pY0fhRSGtWL5fT8DGm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3
oMrongEjGw7sDP48ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEA
ip3mL20+qHNsHfW8hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9
tBjh7cOyuU/c4M4D6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElw==
---- END SSH2 PUBLIC KEY ----

OpenSSH

Contrairement à la croyance populaire, ce format n'est pas enregistré par le générateur. Cependant, il est généré et affiché dans la zone de texte intitulée "Clé publique pour le collage dans le fichier OpenSSH allowed_keys". Pour l'enregistrer en tant que fichier, vous devez le copier manuellement à partir de la zone de texte et le coller dans un nouveau fichier texte.

Pour la clé ci-dessus, cela serait:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5EwgnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8DGm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElw== github-example-key

Le format de la clé est simplement ssh-rsa <signature> <comment> et peut être créé en réorganisant le fichier au format SSH-2.

Régénération des clés publiques

Si vous utilisez ssh-agent, vous aurez probablement aussi accès à ssh-keygen.

Si vous avez votre clé privée OpenSSH (fichier id_rsa), vous pouvez générer le fichier de clé publique OpenSSH en utilisant:

ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub

Si vous ne possédez que la clé privée PuTTY (fichier id_rsa.ppk), vous devez d’abord la convertir.

  1. Ouvrez le PuTTY Key Generator
  2. Dans la barre de menus, cliquez sur "Fichier"> "Charger la clé privée".
  3. Sélectionnez votre fichier id_rsa.ppk
  4. Dans la barre de menus, cliquez sur "Conversions"> "Exporter la clé OpenSSH".
  5. Enregistrez le fichier sous id_rsa (sans extension).

Maintenant que vous avez une clé privée OpenSSH, vous pouvez utiliser l'outil ssh-keygen comme ci-dessus pour effectuer des manipulations sur la clé.

Bonus: Le format de clé publique codée PEM PKCS # 1

Pour être honnête, je ne sais pas à quoi sert cette clé car je n'en ai pas eu besoin. Mais je l'ai dans mes notes que j'ai rassemblées au fil des ans et je l'inclurai ici pour des raisons de santé. Le fichier ressemblera à ceci:

-----BEGIN RSA PUBLIC KEY-----
MIIBCAKCAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5Ew
gnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8D
Gm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48
ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8
hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D
6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElwIBJQ==
-----END RSA PUBLIC KEY-----

Ce fichier peut être généré à l'aide d'une clé privée OpenSSH (telle que générée dans "Régénération de clés publiques" ci-dessus) en utilisant:

ssh-keygen -f ~/.ssh/id_rsa -y -e -m pem > ~/.ssh/id_rsa.pem

Vous pouvez également utiliser une clé publique OpenSSH en utilisant:

ssh-keygen -f ~/.ssh/id_rsa.pub -e -m pem > ~/.ssh/id_rsa.pem

Références:

87
samthecodingman

Il semble que ssh ne puisse pas lire votre clé publique. Mais ça n'a pas d'importance.

Vous téléchargez votre clé publique sur github, mais vous vous authentifiez avec votre clé privée . Voir par exemple la section FILES dans ssh(1).

4
Roland Smith

Si vous copiez et collez votre clé publique avec le presse-papier, il peut arriver que la chaîne de clé publique contenant la nouvelle ligne puisse être cassée.

Assurez-vous que votre chaîne de clé publique est formée d'une seule ligne.

3
Hojin Choi

Au lieu de sauvegarder directement la clé privée, accédez à la section Conversions et exportation de la clé SSh….

1
Jignesh Rawal

J'ai eu le même avertissement. C'était une très vieille clé. J'ai régénéré une clé sur l'OpenSSH 7 actuel et l'erreur a disparu. 

0
arberg