Як отримати файл .pem з пари ключів ssh?


33

Я створив пару ключів за допомогою ssh-keygen і отримав два класичні id_rsa та id_rsa.pub.

Я імпортував відкритий ключ у свій акаунт AWS EC2.

Тепер я створив екземпляр Windows, і щоб розшифрувати пароль цього примірника, консоль AWS запитує мене .pem-файл. Як я можу отримати цей .pem файл із двох моїх файлів id_rsa та id_rsa.pub?


2
Приватний ключ вже є у форматі PEM і його можна використовувати як є.
Майкл Хемптон

@MichaelHampton, це залежатиме від версії ssh-keygen та команди, що використовується для створення пари ключів. Деякі версії використовують RFC4716 за замовчуванням замість PEM.
австрійський

Відповіді:


44

Відповідно до цієї команди можна використовувати:

ssh-keygen -f id_rsa -e -m pem

Це перетворить ваш відкритий ключ у формат, сумісний з OpenSSL. Ваш приватний ключ вже у форматі PEM і його можна використовувати так, як є (як заявив Майкл Хемптон).

Перевірте, чи AWS не вимагає сертифікату (X.509) у форматі PEM, що було б інакше, ніж ваші SSH ключі.


Але їм не потрібен відкритий ключ, чи не так? Їм потрібен приватний ключ для розшифрування пароля з консолі AWS
Майкл Бейлі

Я поняття не маю, для чого це потрібно.
fuero

Не впевнений, наскільки ви знайомі з AWS, але коли ви запускаєте екземпляр Windows (в основному сервер), AWS зберігає пароль від вас, поки ви не надасте їм свій приватний ключ. Потім вони дають вам пароль сервера. Таким чином, сервери Windows і Linux на AWS залежать від приватних ключів.
Майкл Бейлі

1
Це не працює в OS X (ssh -v ==> OpenSSH_6.2p2)
chrish

3
всупереч документації, він видасть ПУБЛІЧНИЙ ключ у форматі PEM, а не приватний. в даний час ssh-keygen не підтримує перетворення приватних ключів.
morgwai

21

Використання ssh-keygenдля експорту ключа у форматі .pem працювало на мене.

ssh-keygen -f id_rsa.pub -m 'PEM' -e > id_rsa.pem

Потім просто скопіюйте .pemключ за потребою.

Довідково:

  • -f id_rsa.pubчастина вказує вхідний файл для читання з
  • -m 'PEM вказує на тип PEM
  • -eпараметр вказує на те, що вихід буде експортуватися

5

id_rsa це файл, який ви повинні використовувати для розшифрування пароля екземпляра Windows EC2, але просто переконайтеся, що файл, який ви копіюєте, не захищений фразою.

Я вирішив проблему отримання тимчасово незахищеного id_rsaфайлу чимось на кшталт:

$ openssl rsa -in ~/.ssh/id_rsa -out tmp_file.pem

2

Спочатку під час використання ssh-keygenя міг генерувати відкритий ключ, сумісний із AWS EC2, але мав проблеми зі створенням сумісних приватних ключів. Далі створюються пари відкритих і приватних ключів, сумісні з AWS EC2.

ssh-keygen -P "" -t rsa -b 4096 -m pem -f my-key-pair

Ось інформація про кожен параметр:

  • -П: призначено для парольної фрази. Навмисно встановлено на порожнє.
  • -t: Вказує тип ключа для створення. Ключова пара AWS EC2 вимагає RSA. З мого досвіду, це стосується створеного відкритого ключа.
  • -b: Вказує кількість бітів у ключі. Підтримувані довжини становлять 1024, 2048 та 4096. Якщо ви підключаєтесь за допомогою SSH під час використання API EC2 Instance Connect, підтримувані довжини становлять 2048 та 4096.
  • -m: Вказує формат ключа для генерації ключів. Встановлення формату “PEM” під час генерації підтримуваного типу приватного ключа призведе до збереження ключа у застарілому форматі приватного ключа PEM. Ключові пари AWS EC2 потребують застарілого формату
  • -f: Вказує назву вихідного файла ключового файлу

Ресурси:

Для отримання додаткової інформації про ssh-keygen дивіться:  https://man.openbsd.org/ssh-keygen.1

AWS - EC2 Key Pairs -  https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html


Майк вирішив не включати документацію для опції '-b'. Можливо, для когось це очевидно, що це означає "4096-бітове шифрування, будь ласка". Як зазначено в пов'язаному документі AWS, "підтримувані довжини становлять 1024, 2048 та 4096. Якщо ви підключаєтесь за допомогою SSH під час використання API EC2 Instance Connect, підтримувані довжини становлять 2048 та 4096."
nclark

@nclard, Не впевнений, чому я залишив цей параметр -b. Просто додав його.
Майк Барлоу - BarDev

0

Коли ви запускаєте екземпляр EC2, ви призначаєте йому пару ключів (або жодну). Він не може бути змінений згодом.

Лише використовуючи цей .pem-файл із цієї пари ключів, ви зможете розшифрувати пароль Windows.

Файл .pem був би завантажений при створенні пари ключів. Ви не можете отримати його знову. Якщо ви її втратили, вам не пощастило.

Ви не можете використовувати .pem-файл, який ви створили самостійно, якщо ви не імпортували цей ключ в AWS до запуску екземпляра та не призначили його.

Простіше кажучи, якщо у вас немає оригінального .pem-файлу, ви не можете отримати пароль.

Редагувати: перечитавши питання, я розумію, що ОП імпортувала його ключ до AWS.

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