Я создал новый экземпляр Windows на AWS EC2, используя пару ключей, которую я создал, загрузив свой открытый ключ с моего локального компьютера.
Экземпляр запустился нормально, но пароль не расшифровывается. Он сообщает:
Я уверен, что загрузил правильный ключ. Я подтвердили, что отпечатки пальцев соответствуют странному формату отпечатков пальцев, который использует AWS.. Но он просто не расшифровывается.
Я пробовал загрузить ключевой файл и вставить его в форму.
В конце концов я понял, что он не удаляет завершающую новую строку, и удалил пустую строку в ключе. Это просто приводит меня к новой ошибке, когда я нажимаю «Расшифровать пароль», хотя:
Управление ключами AWS EC2 не справляется с закрытыми ключами SSH, для которых установлены пароли (зашифрованы). Он этого не обнаруживает и просто выходит из строя с неинформативной ошибкой.
Если ваш закрытый ключ хранится на диске в зашифрованном виде (как и должно быть, IMO), вы должны расшифровать его, чтобы вставить в консоль AWS.
Вместо этого рассмотрите возможность дешифрования пароля локально, чтобы вам не приходилось отправлять свой закрытый ключ в AWS. Получите данные зашифрованного пароля (в кодировке base64) из журнала сервера после запуска или с помощью получить данные пароля или соответствующие запросы API.
Затем вы можете декодировать base64 и расшифровать результат:
base64 -d /tmp/file | openssl rsautl -decrypt -inkey /path/to/aws/private/key.pem
(Закрытые ключи OpenSSH принимаются openssl rsautl
).
Проблема с неспособностью обрабатывать защищенные паролем ключи с полезной ошибкой также влияет на то ec2-get-password
команда.
Смотрите также:
Вот что у меня работало в macOS:
openssl rsa -in $HOME/.ssh/aws-remote -out /Users/home/desktop/unencrypted-rsa.txt
Следует отметить, что вы можете определить, зашифрован ли ваш файл .pem паролем, просмотрев следующую строку. Если он присутствует, вам необходимо расшифровать его перед использованием с Amazon:
Proc-Type: 4,ENCRYPTED
Без использования jq это все еще возможно, но требует некоторого дополнительного анализа возвращаемых данных.
aws ec2 get-password-data "--instance-id=${instance_id}" --query 'PasswordData' | sed 's/\"\\r\\n//' | sed 's/\\r\\n\"//' | base64 -D | openssl rsautl -inkey ${my_key} -decrypt
На моем Mac аргументы командной строки для base64 другие.
Это сработало для меня:
base64 -D -i /tmp/file | openssl rsautl -decrypt -inkey /path/to/key.pem
это будет работать