Я пытаюсь создать закрытый ключ, но у меня проблема.
Когда я использую 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
Недавно я столкнулся с той же проблемой (после обновления до mojave 10.14.1), вот два возможных решения этой проблемы.
ИЛИ
- m PEM
в вашу команду ssh-keygen. Например, вы можете запустить ssh-keygen -m PEM -t rsa -b 4096 -C (скрытый), чтобы принудительно экспортировать ssh-keygen в формате PEM
.
Похоже, что в текущей версии ssh-keygen в mojave формат экспорта по умолчанию - 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 позволяет только файл закрытого ключа для изменения «на месте». (т. е. он заменяет ваш ключевой файл новым файлом).
Таким образом, вы можете сохранить свой старый файл:
Поскольку мы просто экспортируем файл, <новая фраза-пароль>
может быть идентична вашей <старая фраза-пароль>
( если вы не хотите одновременно изменить парольную фразу).
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 файл теперь имеет открытый текст, это плохо.