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

23voto

Kyle Doyle Points 2480

Dans mon cas, il s'est avéré que j'avais des sauts de ligne entre le début/la fin des "en-têtes" et les données clés:

-----BEGIN RSA PRIVATE KEY-----

- Données clés ici -

-----END RSA PRIVATE KEY-----

En supprimant les sauts de ligne supplémentaires, j'ai obtenu

-----BEGIN RSA PRIVATE KEY-----
- Données clés ici -
-----END RSA PRIVATE KEY-----

a résolu mon problème.

4 votes

Cela m'est arrivé lorsque j'ai copié une clé privée à partir de LastPass (pire expérience utilisateur de tous les gestionnaires de mots de passe que j'ai utilisés) en utilisant son bouton "Copier". Copier en utilisant le clavier à partir du champ de saisie ridicule d'une seule ligne a résolu ce problème. Enlever ces lignes vides après avoir collé aurait peut-être également fonctionné, mais non testé.

0 votes

Moi aussi - j'aurais aimé rechercher "LastPass" sur cette page en premier.

15voto

InteressantPunt Points 165

Je suis tombé là-dessus aujourd'hui en écrivant des outils de balisage git pour mon pipeline CI.

Voici la différence entre mes deux clés :

$ diff ~/.ssh/gitlab ~/.ssh/git_ssh_key
27c27
< -----END OPENSSH PRIVATE KEY-----
---
> -----END OPENSSH PRIVATE KEY-----
\ No newline at end of file

J'ai modifié mon code comme suit :

     with open(ssh_key_file, 'w') as skf:
-        skf.write(ssh_key)
+        skf.write(ssh_key + '\n')

Et maintenant ma clé ssh fonctionne.

TL;DR - Je suppose que vous devez avoir une nouvelle ligne à la fin de votre clé privée.

7 votes

Oui, c'était exactement mon problème. Le fichier clé devait se terminer par une nouvelle ligne vide.

0 votes

Oui, ce problème semble avoir un impact sur docker-alpine

0 votes

C'est aussi un problème de macOS. La nouvelle ligne a fonctionné à merveille.

10voto

Vicente Quintans Points 209

Après une récente mise à jour dans Fedora 32, j'ai commencé à recevoir ces avertissements lors de la connexion à des hôtes distants.

J'ai résolu le problème en ajoutant pkcs11: au paramètre IdentityFile dans mon fichier .ssh/config comme ceci :

IdentityFile pkcs11:~/.ssh/my_key.pem 

Pour référence, extrait de la page man ssh_config :

L'identité d'authentification peut également être spécifiée sous la forme d'une URL PKCS#11 commençant par la chaîne pkcs11:.

2 votes

Cela a résolu le problème pour moi, lorsque j'ai exécuté sur Fedora 32 et me suis connecté à Amazon EC2. Merci de partager!

0 votes

Quelle version de openssh est utilisée? Sur OpenSSH_8.3p1, le préfixe pkcs11: n'est pas reconnu et il me dit "no such file or directory pkcs11:/my/file.pem". Mais je semble rencontrer le même problème: les avertissements et les problèmes tels que les sauts de lignes, l'ajout d'un saut de ligne à la fin, etc. ne le corrigent pas.

0 votes

Openssh-8.3p1-2.fc32.x86_64 IdentityFile pkcs11:/home/vquintans/.ssh/vquintans.pem

9voto

Chaos Points 56

J'ai demandé à openssh d'utiliser un fichier d'identité particulier en le spécifiant dans le fichier .ssh/config.

La configuration initiale fonctionnait avait

IdentityFile =  

Cela a cessé de fonctionner sans aucun changement. Après avoir réfléchi un peu, j'ai remplacé le "chemin du fichier de clé publique" ci-dessus par "chemin du fichier de clé privée". Cela a fonctionné. La raison en est que les fichiers de clés publique et privée contiennent de grands nombres pseudopremiers liés à l'algorithme RSA. Si vous remplacez le fichier de clé privée par un fichier de clé publique, ces nombres cryptographiques ne seront pas extraits correctement du bloc base64 enregistré dans les fichiers de clés. Il semble que certaines versions de ssh peuvent reconnaître l'extension .pub et l'utiliser pour identifier le fichier de clé privée correct - et d'autres versions ne le font pas. C'est une autre manière dont cette erreur peut se produire. J'espère que cela aidera quelqu'un.

1 votes

Dans mon cas, j'avais configuré le fichier config avec path_to_public_key et tout fonctionnait. Cependant, lorsque le Mac a redémarré de manière brutale et que j'ai essayé de faire un git push quelques jours plus tard, j'ai commencé à recevoir l'erreur indiquée ci-dessus. Mais lorsque je l'ai maintenant changé en path_to_private_key, tout fonctionne... Hmmm. Je ne suis pas sûr pourquoi...

0 votes

Oui, pointé vers la clé privée et tout va bien maintenant. Merci.

1 votes

Il doit s'agir d'un fichier de clé privée pour la section IdentityFile.

6voto

Joshua Davies Points 151

Dans mon cas, cela se produisait parce qu'il me manquait une ligne vide entre DEK-Info et les données clés réelles. J'avais :

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,6E6F6E65206F6620796F757220627573
VGhpcyBpcyBub3QgbXkgYWN0dWFsIGtleSBzb3JyeSB0byBkaXNhcHBvaW50IHlv
...

Mais il devait être :

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,6E6F6E65206F6620796F757220627573

VGhpcyBpcyBub3QgbXkgYWN0dWFsIGtleSBzb3JyeSB0byBkaXNhcHBvaW50IHlv
...

0 votes

J'ai copié une clé privée depuis LastPass (pire UX de tous les gestionnaires de mots de passe que j'ai utilisés) en utilisant son bouton "Copier", ce qui a ajouté une ligne vide excessive après ----BEGIN RSA PRIVATE KEY----- et une autre avant -----END RSA PRIVATE KEY-----. Copier depuis le champ de saisi d'une seule ligne ridicule a résolu ce problème. Supprimer ces lignes vides après avoir collé aurait peut-être fonctionné aussi, mais cela n'a pas été testé.

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