Назад | Перейти на главную страницу

Пароль Windows не расшифровывается на AWS EC2 даже с правильным закрытым ключом

Я создал новый экземпляр 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
  1. перейти в панель управления ec2
  2. удалить существующий ключ
  3. создать новую пару ключей
  4. выберите имя
  5. скачайте и храните в локальном
  6. запустите экземпляр и загрузите свою копию экземпляра Windows
  7. назовите новую пару ключей именем, использованным на шаге 4
  8. используйте этот вновь сгенерированный ключ для расшифровки пароля

это будет работать