ssh-keygen erstellt keinen privaten RSA-Schlüssel

71

Ich versuche einen privaten Schlüssel zu erstellen und habe ein Problem.

Bei Verwendung ssh-keygen -t rsa -b 4096 -C "[email protected]"erhalte ich einen privaten Schlüssel im folgenden Format.

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

Und dies wird für eine Anwendung, die ich verwenden möchte, nicht akzeptiert.

Ich erwarte einen Schlüssel im folgenden RSA-Format.

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

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

Wie erstelle ich das richtige Format? Das ist komisch, weil jeder andere Mac, den ich habe, das richtige Format erstellt, außer dem, mit dem ich Probleme habe.

Ich bin auf einem neu installierten Mac OS Mojave

Mond
quelle
und die anderen Macs sind nicht auf Mojave? Ich bin auch auf Mojave und bekomme das "neue" OpenSh-Schlüsselformat. Ich gehe davon aus, dass andere Macs auf niedrigeren Versionen laufen. Überprüfen Sie die verwendete OpenSSL-Version.
Zina
@Zina andere Macs sind ebenfalls auf Mojave und haben die gleiche OpenSSL-Version.
Mond
RSA sollte der Standardtyp sein. Was ist, wenn Sie die -t rsaOption ganz weglassen ?
Guzzijason
@guzzijason es ist das gleiche. Das macht mich verrückt. Auch wenn ich auf meinem Mac die Option -t rsa weglasse (funktioniert), wird RSA korrekt generiert.
Mond
Ich hatte das gleiche Problem. Als Workaround habe ich eine ältere Version von openssh verwendet, um den Schlüssel zu generieren. Sie können mit openssl rsa -text -in key_file -passin 'pass: passphrase' testen, ob Ihr generierter Schlüssel korrekt ist. Version 7.4p1-16 funktioniert.
atype

Antworten:

76

Ich hatte kürzlich das gleiche Problem (nach dem Upgrade auf Mojave 10.14.1). Hier sind zwei mögliche Lösungen für dieses Problem.

  • Downgrade dein ssh-keygen-Binary (du kannst leicht von jedem Linux / Docker-Image eine alte Version herunterladen)

ODER

  • Fügen Sie -m PEMIhrem Befehl ssh-keygen eine Option hinzu . Beispielsweise können Sie ssh-keygen -m PEM -t rsa -b 4096 -C "[email protected]"ssh-keygen zum Exportieren als PEMFormat zwingen .

Es scheint, als ob in der aktuellen ssh-keygen-Version in Mojave das Standard-Exportformat RFC4716wie hier erwähnt ist

Apolozeus
quelle
1
Das voreingestellte Export-Publickey- Format ist zwar rfc4716, aber das Format in Q ist ein internes Private-Key-Format und das 'neue' OpenSSH-Format, das 1999 (!) Nicht existierte und in der aktuellen Version nicht mehr beschrieben wird. Versuchen Sie 6.0 bis 6.3.
Dave_thompson_085
3
Ich kann die Antwort nicht bearbeiten, aber bitte stellen Sie klar, dass 1. und 2. unabhängige Lösungen sind, keine aufeinander folgenden Schritte. Für eine einmalige Schlüsselgenerierung ist kein Downgrade erforderlich. -m PEM
Fügen Sie
49

Neue Schlüssel im OpenSSH-Format für private Schlüssel können mit dem Dienstprogramm ssh-keygen in das alte PEM-Format konvertiert werden.

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

Ein Downgrade auf ältere OpenSSH-Versionen ist nicht erforderlich, um dieses Ergebnis zu erzielen.

meinTagebuch
quelle
Ja. Wie ich bereits in den Kommentaren zur akzeptierten Antwort erwähnt habe. serverfault.com/questions/939909/…
sdoxsee
9
Was in der akzeptierten Antwort nicht klar ist, ist, dass Sie kein neues Schlüsselpaar erstellen müssen. Sie können Ihren vorhandenen Schlüssel nehmen und mit diesem Befehl konvertieren. Da die Datei überschrieben wird, ist es meiner Meinung nach eine gute Idee, vorher eine Sicherungskopie zu erstellen, nur für den Fall.
Martintama
Vielen Dank, dass Sie Anweisungen zum Konvertieren eines vorhandenen privaten Schlüssels in das RSA-Format hinzugefügt haben. Hab gerade meinen Speck gerettet!
Craig Blaszczyk