153 votes

SSH retourne soudainement un format invalide

Il y a quelque temps, j'ai mis en place un serveur sur AWS et j'ai utilisé leur clé SSH générée. J'ai enregistré la clé dans Lastpass et je l'ai récupérée avec succès à partir de là auparavant, et j'ai réussi à la faire fonctionner. Cependant, après avoir essayé à nouveau aujourd'hui, je n'arrive pas à la faire fonctionner.

-rw------- 1 itsgreg users 1674 Jun 6 12:51 key_name

J'ai essayé ssh -i key_name, ssh-keygen -f key_name, mais rien ne fonctionne, je reçois toujours ce message d'erreur :

Chargement de la clé "key_name" : format invalide

Y a-t-il un moyen de réparer cela?

0 votes

Juste remarqué quelque chose : il devrait être chmoded 0400 (lecture seule). Il semble que ce ne soit pas le cas ici, car l'utilisateur a le privilège d'écriture.

0 votes

J'avais juste besoin d'une nouvelle ligne à la fin de la clé privée. Copié d'Ubuntu sur Mac et rencontré une erreur.

89voto

AKX Points 573

J'avais le même problème, et il s'est avéré que j'avais des séparateurs de ligne de style Windows (CRLF) dans le fichier pour une raison quelconque.

De plus, le fichier doit se terminer par un seul LF.

Corriger cela a arrangé les choses à nouveau.

1 votes

La mienne était EOF + CR. Aucune idée d'où venaient ces CR.

0 votes

C'était mon problème. Sublime Text l'avait converti en style Windows. Je l'ai changé en Unix et je me suis assuré que le LF de fin était là et tout fonctionnait à nouveau correctement.

2 votes

Celui-ci m'a sauvé. Il a fallu moins d'une minute pour réparer. Notepad++>Modifier>Conversion de fin de ligne>Unix

81voto

Enrico P. Varella Points 443

À partir de openssh 7.6, il adopte par défaut un nouveau format plus sécurisé. Vous pouvez le forcer à se convertir à ce format en utilisant les commandes ci-dessous pour changer le mot de passe de votre clé. Si vous n'avez pas de mot de passe et/ou ne voulez pas en mettre un, vous pouvez simplement appuyer sur Entrée et la clé sera tout de même réécrite dans le nouveau format

ssh-keygen -f ~/.ssh/id_rsa -p

0 votes

Dans mon cas, cela fonctionne uniquement lorsque je ne définis pas de nouveau mot de passe.

6 votes

Et la nouvelle version 8.1 de ssh-keygen d'OpenSSH (j'utilisais la 7.7.2.1 auparavant) ne veut même pas lire la clé de la même manière que la nouvelle version de ssh le fait: Failed to load key id_rsa: format invalide

0 votes

Je voulais dire Win32-OpenSSH

64voto

13dimitar Points 2310

Vérifiez le contenu de key_name, si l'agent dit format invalide, alors il y a quelque chose qui ne va pas avec la clé - comme .. êtes-vous sûr que c'est la bonne clé? Même si ce n'est pas la clé privée dont vous avez besoin, l'agent ssh ne renverra pas format invalide si la clé fonctionne, vous ne pourrez simplement pas vous connecter. Vous avez peut-être placé votre clé publique là-dedans, pour une raison quelconque. Vérifiez!

Un problème courant est si le fichier ne se termine pas par une nouvelle ligne. Ajoutez une nouvelle ligne, enregistrez et essayez à nouveau.

25 votes

Certainement vérifié. Commence par ----BEGIN RSA PRIVATE KEY----- et se termine par -----END RSA PRIVATE KEY-----. De plus, cela fonctionnait auparavant.

6 votes

Il est très peu probable, mais toujours possible, que le fichier soit corrompu. Créez-en un nouveau et remplissez à nouveau le contenu à partir de lastpass.

15 votes

Waouh, cela a réellement aidé! Après avoir généré la nouvelle clé, j'ai remarqué que la nouvelle clé avait 64 caractères par ligne tandis que ma vieille clé en avait 76. J'ai reformaté ma vieille clé pour n'avoir que 64 caractères par ligne, et là elle a commencé à fonctionner! Il me manquait également un tiret sur la première ligne.

38voto

Ras Points 411

J'ai résolu ce problème sous Windows en convertissant la clé privée au format OpenSSH en utilisant le générateur de clés PuTTY.

  1. Menu Démarrer | Toutes les applications | PuTTY | PuTTYgen
  2. Charger my.ppk
  3. Conversions | Exporter une clé OpenSSH
  4. Enregistrer my_openssh.ppk

Menu Démarrer, Toutes les applications, section PuTTY, PuTTYgen

PuTTYgen, Conversions, Export OpenSSH

Maintenant cela fonctionne :

ssh -i "my_openssh.ppk" user@example.com

Conversion pour Mac : (merci @ChrisGillatt)

brew install putty 
puttygen ~/.ssh/my.ppk -O private-openssh -o ~/.ssh/my_openssh.ppk

2 votes

Voici comment faire cela sur un terminal Mac (en supposant que vous avez Brew installé) : brew install putty && puttygen ~/.ssh/my-key-name.ppk -O private-openssh -o ~/.ssh/my-key-name

0 votes

@Ras merci, cela a aussi fait la différence pour moi. J'espère que vous apprécierez mes révisions à votre réponse.

29voto

starfry Points 541

Si vous obtenez un avertissement concernant un format de clé publique invalide mais que la commande fonctionne toujours, cela peut être parce que vous n'avez qu'un fichier de clé privée et que vous utilisez OpenSSH 8.3.

OpenSSH 8.3 inclut un changement dans le client ssh où il recherche le fichier de clé publique correspondant à la clé privée et affiche cet avertissement load pubkey "/home/user/.ssh/id.rsa": format invalide, mais continue à se connecter avec succès. Les outils utilisant ssh, tels que scp ou git, peuvent afficher key_load_public: format invalide.

Le client n'a pas besoin de la clé publique lors de la connexion, seulement de la clé privée. Cette vérification est donc inutile et a déjà été supprimée par un commit amont, mais n'est pas encore dans une version publiée.

Il y a une discussion à ce sujet sur le forum ArchLinux.

8 votes

Merci! Je n'avais pas la clef publique pour ma clé privée. Plus de problème depuis que j'ai généré la clé publique : ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

0 votes

C'est exactement la cause première de mon côté. Je suis confus à propos du comportement car je venais juste de copier une clé d'une machine à une autre. Ensuite, l'avertissement apparaît et SSH fonctionne toujours. Vérifiez les versions de SSH sur Ubuntu 20.04 et 20.10. OpenSSH_8.2p1 sur Ubuntu 20.04 sans avertissement tandis que OpenSSH_8.3p1 avec avertissement sur Ubuntu 20.10. Je suis maintenant soulagé de voir l'avertissement, comme si quelqu'un me disait bonjour. Merci!

0 votes

Voici la vraie réponse! J'avais renommé ma clé publique pour mettre le pem dans id_rsa.pub, et ssh / git s'attend à ce qu'elle soit au format de clé publique ssh-rsa et non pem.

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