Как получить файл .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
вопреки документации, он будет выводить ключ PUBLIC в формате PEM, а не частный. В настоящее время ssh-keygen не поддерживает преобразование закрытых ключей.
Моргваи

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

Вот информация о каждом параметре:

  • -P: для парольной фразы. Преднамеренно установлено пустым.
  • -t: указывает тип создаваемого ключа. Для пары ключей AWS EC2 требуется RSA. По моему опыту, это относится к открытому ключу.
  • -b: определяет количество бит в ключе. Поддерживаемые длины: 1024, 2048 и 4096. Если вы подключаетесь с использованием SSH при использовании API подключения экземпляра EC2, поддерживаемые длины составляют 2048 и 4096.
  • -m: Определяет формат ключа для генерации ключа. Установка формата «PEM» при создании поддерживаемого типа закрытого ключа приведет к тому, что ключ будет сохранен в устаревшем формате закрытого ключа PEM. Для пары ключей AWS EC2 требуется устаревший формат
  • -f: определяет имя выходного файла файла ключа

Ресурсы:

Для получения дополнительной информации о ssh-keygen см.  Https://man.openbsd.org/ssh-keygen.1.

AWS - ключевые пары EC2 -  https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html


Майк решил не включать документацию для опции '-b'. Возможно, для некоторых это очевидно, что означает «пожалуйста, 4096-битное шифрование». Как указано в связанном документе AWS: «Поддерживаемые длины - 1024, 2048 и 4096. Если вы подключаетесь с использованием SSH при использовании API подключения экземпляра EC2, поддерживаемые длины составляют 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.