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

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

Когда я использую ssh-keygen -t rsa -b 4096 - C (скрыто) Я получаю закрытый ключ в следующем формате.

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

77
задан 28 November 2018 в 11:38
3 ответа

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

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

ИЛИ

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

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

80
ответ дан 28 November 2019 в 19:27

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

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

Есть нет необходимости переходить на более старую версию OpenSSH только для достижения этого результата.

55
ответ дан 28 November 2019 в 19:27

Некоторые уточнения приведенных выше ответов, чтобы обеспечить четкий путь как для открытого, так и для закрытого ключа.

Вы можете напрямую экспортировать (-e) ваши ssh-ключи в формат pem:

Для вашего открытого ключа:

cd ~/.ssh
ssh-keygen -e -m PEM id_rsa > id_rsa.pub.pem

Для вашего закрытого ключа:

Все немного сложнее, так как ssh-keygen позволяет только файл закрытого ключа для изменения «на месте». (т. е. он заменяет ваш ключевой файл новым файлом).

Таким образом, вы можете сохранить свой старый файл:

Поскольку мы просто экспортируем файл, <новая фраза-пароль> может быть идентична вашей <старая фраза-пароль> ( если вы не хотите одновременно изменить парольную фразу).

cd ~/.ssh
cp id_rsa id_rsa.bak
ssh-keygen -p -P "<old pass phrase>" -N "<new pass phrase>" -m PEM -f id_rsa 
cp id_rsa id_rsa.priv.pem
cp id_rsa.bak id_rsa

ПРИМЕЧАНИЕ: не рекомендуется передавать свою парольную фразу в cli.

Безопасный метод:

cd ~/.ssh
cp id_rsa id_rsa.bak
ssh-keygen -p  -m PEM -f id_rsa 
cp id_rsa id_rsa.priv.pem
cp id_rsa.bak id_rsa

При использовании этого метода вам будет предложено ввести старую и новую парольную фразу.

Примечание: после преобразования файла закрытого ключа в .pem файл теперь имеет открытый текст, это плохо.

2
ответ дан 14 August 2020 в 03:30

Теги

Похожие вопросы