Как получить файл.pem из пары ключей ssh?

Я создал пару ключей с помощью ssh-keygen и получил два классических id_rsa и id_rsa.pub.

Я импортировал открытый ключ в свою учетную запись AWS EC2.

Теперь я создал экземпляр Windows и для расшифровки пароля этого экземпляра консоль AWS запрашивает у меня файл.pem. Как я могу получить этот файл.pem из моих двух файлов id_rsa и id_rsa.pub?

6 ответов

Решение

В соответствии с этим, эта команда может быть использована:

ssh-keygen -f id_rsa -e -m pem

Это преобразует ваш открытый ключ в формат, совместимый с OpenSSL. Ваш закрытый ключ уже находится в формате PEM и может использоваться как есть (как сказал Майкл Хэмптон).

Дважды проверьте, не запрашивает ли AWS сертификат (X.509) в формате PEM, который отличается от ваших ключей SSH.

С помощью ssh-keygen у меня экспорт ключа в.pem формате работал.

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

Затем просто скопируйте .pem ключ по необходимости.

Для справки:

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

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

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

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

  • -P: для парольной фразы. Преднамеренно установлено пустым.
  • -t: указывает тип создаваемого ключа. Для пары ключей AWS EC2 требуется RSA. По моему опыту, это относится к открытому ключу.
  • -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

id_rsa это файл, который вы должны использовать для расшифровки пароля экземпляра Windows EC2, но просто убедитесь, что копируемый вами файл не защищен фразой.

Я решил проблему, получив временно незащищенный id_rsa файл с чем-то вроде:

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

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

Только используя этот файл.pem из этой пары ключей, вы сможете расшифровать пароль Windows.

Файл.pem был бы загружен при создании пары ключей. Вы не можете получить это снова. Если вы потеряли его, вам не повезло.

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

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

Изменить: после перечитывания вопроса я понимаю, что ОП импортировал свой ключ в AWS.

Добавьте свой открытый ключ на свой сервер, чтобыauthorized_keys

      cat .ssh/id_rsa.pub >> .ssh/authorized_keys

или вы можете добавить его вручную, используя текстовый редактор на вашем сервере.

Скопируйте свой закрытый ключ на свой сервер

      cp .ssh/id_rsa /home/your_user/your_key.pem

Теперь на вашем клиентском ПК загрузите ключ с сервера.

      scp your_user@yourhostserver.com:/home/your_user/your_key.pem /home/your_local_user/Downloads/
Другие вопросы по тегам