ssh-keygen не створює приватний ключ RSA


70

Я намагаюся створити приватний ключ і виникли проблеми.

Під час використання 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 OS Mojave


а інші Маки не на Мохаве? Я теж на Mojave і отримую "новий" формат відкритих клавіш. Тож я припускаю, що інші Маки мають нижчі версії. Перевірте використану версію OpenSSL.
Зіна

@Zina інші Маки також на Mojave і мають таку ж версію OpenSSL.
Місяць

RSA має бути типовим типом. Що робити, якщо -t rsaваріант взагалі пропущено ?
guzzijason

@guzzijason це те саме. Ось що мене зводить з розуму. Навіть якщо я пропускаю -t rsa на своєму mac (робочому), він генерує RSA правильно.
Місяць

У мене була така ж проблема. Як вирішення, я використовував старішу версію openssh для створення ключа. Ви можете перевірити, чи ваш згенерований ключ правильний, використовуючи openssl rsa -text -в key_file -passin 'pass: passphrase'. Версія 7.4p1-16 працює.
атип

Відповіді:


73

Нещодавно я зіткнувся з тією ж проблемою (після оновлення до мою 10.14.1), ось два можливі рішення цього питання.

  • Зменшіть свій бінарний 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таким, як згадується тут


1
Формат publickey експорту за замовчуванням - це справді rfc4716, але формат у Q - це внутрішній формат privatekey і є "новим" форматом OpenSSH, який не існував у 1999 році! спробуйте від 6,0 до 6.3.
dave_thompson_085

3
Я не в змозі відредагувати відповідь, але будь ласка, майте зрозуміти, що 1. і 2. є незалежними рішеннями, а не послідовними кроками. НЕ потрібно знижувати версію для одноразового генерації ключів. Просто додайте-m PEM
sdoxsee

47

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

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

Для досягнення цього результату не потрібно переходити на старі OpenSSH.


Так. Як я вже згадував у коментарях до прийнятої відповіді. serverfault.com/questions/939909/…
sdoxsee

8
Що не зрозуміло у прийнятій відповіді, це те, що вам не потрібно створювати нову пару ключів. Ви можете взяти наявний ключ і перетворити їх за допомогою цієї команди. Він перезаписує файл, тому я думаю, що це гарна ідея зробити резервну копію раніше, про всяк випадок.
мартінтама

Дякуємо, що додали інструкції щодо перетворення наявного приватного ключа у формат RSA. Щойно врятував мій бекон!
Крейг Блащик
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.