Как получить файл.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/