Я пытаюсь создать закрытый ключ, но возникла проблема.
Когда я использую 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 возможных решения этой проблемы.
ИЛИ
-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 файл теперь отображается в виде открытого текста, это плохо.