ssh-keygen ne crée pas de clé privée RSA

73

J'essaie de créer une clé privée et d'avoir un problème.

Lorsque j'utilise ssh-keygen -t rsa -b 4096 -C "[email protected]", je reçois une clé privée au format suivant.

-----BEGIN OPENSSH PRIVATE KEY-----
uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END OPENSSH PRIVATE KEY-----

Et ceci n'est pas accepté pour une application que j'essaie d'utiliser.

Je m'attends à une clé dans le format RSA suivant.

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

uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END RSA PRIVATE KEY-----

Comment créer le bon format? C'est bizarre parce que tous les autres mac que je possède crée le bon format, sauf celui avec lequel je rencontre un problème.

Je suis sur un Mojave Mac OS fraîchement installé

Lune
la source
et les autres Mac ne sont pas sur Mojave? Je suis aussi sur Mojave et j'obtiens le "nouveau" format de clé Opensh. Donc, je suppose que les autres Mac sont sur des versions inférieures. Vérifiez la version OpenSSL utilisée.
Zina
Les autres Macs de @Zina sont également sur Mojave et possèdent la même version OpenSSL.
Lune
RSA devrait être le type par défaut. Et si vous omettez -t rsacomplètement l' option?
guzzijason
@ Guzzijason c'est la même chose. C'est ce qui me rend fou. Même si je omets le -trsa sur mon mac (qui fonctionne), il génère correctement RSA.
Lune
J'ai eu le même problème. En guise de solution de contournement, j'ai utilisé l'ancienne version d'Opensh pour générer la clé. Vous pouvez tester si votre clé générée est correcte avec openssl rsa -text -in key_file -passin 'pass: phrase secrète'. La version 7.4p1-16 fonctionne.
18h15

Réponses:

76

J'ai rencontré le même problème récemment (après la mise à niveau vers mojave 10.14.1), voici 2 solutions possibles pour ce problème.

  • Déclassez votre binaire ssh-keygen (vous pouvez facilement obtenir l'ancienne version à partir de n'importe quelle image linux / docker)

OU

  • Ajoutez une option -m PEMdans votre commande ssh-keygen. Par exemple, vous pouvez ssh-keygen -m PEM -t rsa -b 4096 -C "[email protected]"forcer ssh-keygen à exporter au PEMformat.

Il semble que dans la version actuelle de ssh-keygen dans mojave, le format d'exportation par défaut est RFC4716celui mentionné ici

Apolozeus
la source
1
Le format d' exportation par défaut de publickey est bien rfc4716, mais le format dans le Q est un format interne de clé privée et est le "nouveau" format d'OpenSSH, qui n'existait pas en 1999 (!) Et n'est plus décrit dans current; essayez de 6.0 à 6.3.
dave_thompson_085
3
Je ne suis pas en mesure de modifier la réponse, mais veuillez bien préciser que les solutions 1. et 2. sont des solutions indépendantes et non des étapes séquentielles. Vous n'avez PAS besoin de rétrograder pour une génération de clé unique. Ajoutez juste le-m PEM
sdoxsee le
52

Les nouvelles clés au format de clé privée OpenSSH peuvent être converties à l’aide de l’utilitaire ssh-keygen vers l’ancien format PEM.

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

Il n'est pas nécessaire de revenir à OpenSSH plus ancien pour obtenir ce résultat.

mondeardiary
la source
Oui. Comme je l'ai déjà mentionné dans les commentaires sur la réponse acceptée. serverfault.com/questions/939909/…
sdoxsee le
9
Ce qui n’est pas clair dans la réponse acceptée est qu’il n’est pas nécessaire de créer une nouvelle paire de clés. Vous pouvez prendre votre clé existante et les convertir avec cette commande. Il écrase le fichier et je pense donc que c'est une bonne idée de faire une sauvegarde avant, juste au cas où.
Martintama
Merci d’ajouter des instructions sur la conversion d’une clé privée existante au format RSA. Je viens de sauver mon bacon!
Craig Blaszczyk