ssh-keygen не создает закрытый ключ RSA

73

Я пытаюсь создать закрытый ключ и возникла проблема.

Когда я использую ssh-keygen -t rsa -b 4096 -C "your_email@example.com", я получаю закрытый ключ в следующем формате.

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

И это не принимается за приложение, которое я пытаюсь использовать.

Я ожидаю ключ в следующем формате RSA.

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

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

Как мне создать правильный формат? Это странно, потому что все остальные мои Mac создают правильный формат, кроме того, с которым у меня проблемы.

Я на свежей установленной Mac OS Mojave

Луна
источник
а другие Маки не на Мохаве? Я тоже на Мохаве и получаю "новый" формат ключа openssh. Поэтому я предполагаю, что другие Маки находятся на более низких версиях. Проверьте используемую версию OpenSSL.
Зина
@Zina другие Маки также на Мохаве и имеют ту же версию OpenSSL.
Луна
RSA должен быть типом по умолчанию. Что если вы -t rsaвообще пропустите эту опцию?
Guzzijason
@guzzijason это то же самое. Это то, что сводит меня с ума. Даже если я опущу -t rsa на моем Mac (работающем), он генерирует RSA правильно.
Луна
У меня была такая же проблема. В качестве обходного пути я использовал более старую версию openssh для генерации ключа. Вы можете проверить правильность сгенерированного ключа с помощью openssl rsa -text -in key_file -passin 'pass: passphrase'. Версия 7.4p1-16 работает.
нет

Ответы:

76

Недавно я столкнулся с той же проблемой (после обновления до mojave 10.14.1), здесь есть 2 возможных решения этой проблемы.

  • Понизьте ваш бинарный файл ssh-keygen (вы можете легко получить старую версию из любого образа linux / docker)

ИЛИ ЖЕ

  • Добавьте опцию -m PEMв вашу команду ssh-keygen. Например, вы можете запустить ssh-keygen -m PEM -t rsa -b 4096 -C "your_email@example.com"ssh-keygen для экспорта в PEMформат.

Похоже, что в текущей версии ssh-keygen в mojave формат экспорта по умолчанию такой же, RFC4716как здесь

Apolozeus
источник
1
Формат publickey экспорта по умолчанию действительно rfc4716, но формат в Q является внутренним форматом privatekey и является «новым» форматом OpenSSH, который не существовал в 1999 году (!) И более не описан в настоящее время; попробуйте 6.0 до 6.3.
dave_thompson_085
3
Я не могу отредактировать ответ, но, пожалуйста, имейте ввиду, что 1. и 2. являются независимыми решениями, а не последовательными шагами. Вам НЕ нужно понижать версию для генерации одноразовых ключей. Просто добавьте-m PEM
sdoxsee
52

Новые ключи с форматом закрытого ключа OpenSSH можно преобразовать с помощью утилиты ssh-keygen в старый формат PEM.

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

Нет необходимости переходить на более раннюю версию OpenSSH, чтобы достичь этого результата.

mydeardiary
источник
Да. Как я уже упоминал в комментариях к принятому ответу. serverfault.com/questions/939909/…
sdoxsee
9
В принятом ответе неясно, что вам не нужно создавать новую пару ключей. Вы можете взять существующий ключ и преобразовать их с помощью этой команды. Он перезаписывает файл, поэтому я считаю хорошей идеей сделать резервную копию раньше, на всякий случай.
мартинтама
Спасибо за добавление инструкций о том, как преобразовать существующий закрытый ключ в формат RSA. Просто спас мой бекон!
Крейг Блащик