Назад | Перейти на главную страницу

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

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

Когда я использую 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

Недавно я столкнулся с той же проблемой (после обновления до 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 в мохаве формат экспорта по умолчанию RFC4716 как уже упоминалось Вот

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

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

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

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

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

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

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

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

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

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

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

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

ПРИМЕЧАНИЕ: передавать пароль на клиентской консоли - плохая идея.

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

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 файл теперь отображается в виде открытого текста, это плохо.