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

21

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

Экземпляр запустился нормально, но он не расшифровывает пароль. Это сообщает:

Закрытый ключ должен начинаться с «----- BEGIN RSA PRIVATE KEY -----» и заканчиваться на «----- END RSA PRIVATE KEY -----»

Я уверен, что я загрузил правильный ключ. Я убедился, что отпечатки пальцев соответствуют странному формату отпечатков пальцев, который использует AWS . Но это не расшифрует.

Я попытался загрузить файл ключа и вставить его в форму.

В конце концов я понял, что он не удаляет завершающий символ новой строки, и удалил пустую строку в ключе. Это просто возвращает меня к новой ошибке, когда я нажимаю «Расшифровать пароль», хотя:

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

Крейг Рингер
источник

Ответы:

22

Управление ключами AWS EC2 не справляется с закрытыми ключами SSH, для которых установлены пароли (зашифрованы). Это не обнаруживает это, и просто терпит неудачу с неинформативной ошибкой.

Если ваш закрытый ключ хранится в зашифрованном виде на диске (как и должно быть, IMO), вы должны расшифровать его, чтобы вставить его в консоль AWS.

Вместо того, чтобы делать это, рассмотрите возможность расшифровки пароля локально, чтобы вам не приходилось отправлять свой закрытый ключ в AWS. Получите зашифрованные данные пароля (в кодировке base64) из журнала сервера после запуска или используя get-password-data или соответствующие запросы API.

Вы можете затем base64 декодировать и расшифровать результат:

base64 -d /tmp/file | openssl rsautl -decrypt -inkey /path/to/aws/private/key.pem

(Закрытые ключи OpenSSH принимаются openssl rsautl).

Проблема с невозможностью обработки защищенных паролем ключей с полезной ошибкой также влияет на ec2-get-passwordкоманду .

Смотрите также:

Крейг Рингер
источник
1
Спасибо. Вот полная командная строка, которую я использую, следуя вашим советам: aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} (использует aws- cli и jq ).
Бен Батлер-Коул
у меня base64 жалуется -dтак -Dработает. я на OS X
Саад Масуд
2
В OS X я добавил бы еще одну команду в этот канал: aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} | pbcopy ... которая отправляет пароль прямо в ваш буфер обмена.
Марк Маглана
1
Это надо пометить как правильный ответ ИМХО. Так как ответы других немного небезопасны по сравнению с этим
webofmars
4

Без использования 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
Бен
источник
Работал отлично, на WSL Ubuntu мне пришлось использовать, base64 -dа не -D.
Сет Стоун
3

Вот что у меня сработало в macOS:

openssl rsa -in $HOME/.ssh/aws-remote -out /Users/home/desktop/unencrypted-rsa.txt

Следует отметить, что вы можете определить, зашифрован ли ваш .pem-файл паролем, выполнив следующую строку. Если он присутствует, вам нужно расшифровать его перед использованием с Amazon:

Proc-Type: 4,ENCRYPTED
Джанго Рейнхардт
источник
Для меня это было решением. Пользовательский интерфейс AWS не обнаруживает, что ключ защищен парольной фразой, и вам необходимо расшифровать его раньше. Это немного небезопасно, хотя. Поэтому удалите расшифрованный файл впоследствии.
webofmars
2

На моем Mac аргументы командной строки для base64 разные.

Это сработало для меня:

base64 -D -i /tmp/file | openssl rsautl -decrypt -inkey /path/to/key.pem
Дэн
источник
-1
  1. перейти на панель управления ec2
  2. удалить существующий ключ
  3. создать новую пару ключей
  4. выберите имя
  5. скачать и хранить его в местном
  6. запустите экземпляр и загрузите копию экземпляра Windows
  7. Назовите новую пару ключей с именем, использованным в шаге 4
  8. использовать этот новый ключ для расшифровки пароля

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

Арун Мохан
источник
1
Да, это сработает. Но это также отчасти упускает смысл - я объясняю случай, когда вы загружаете локальный ключ.
Крейг Рингер,