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


21

Я створив новий екземпляр Windows на AWS EC2, використовуючи ключ, який я створив, завантаживши свій відкритий ключ з моєї локальної машини.

Екземпляр запустився добре, але пароль не розшифрує. Він повідомляє:

Приватний ключ повинен починатися з "----- НАЧАЙТЕ ПРИВАТНИЙ КЛЮЧ RSA -----" і закінчуючись "----- ЗАКОННИЙ КРИК РСА"

Я впевнений, що я завантажив правильний ключ. Я переконався, що відбитки пальців збігаються із дивним форматом відбитків пальців, який використовує AWS . Але він просто не розшифрується.

Я спробував завантажити ключовий файл і вставити його у форму.

Зрештою я зрозумів, що він не знімає нового рядка, і видалив порожній рядок у ключі. Це просто приводить мене до нової помилки, коли я натискаю "Розшифрувати пароль", хоча:

Під час розшифрування пароля сталася помилка.  Переконайтесь, що ви правильно ввели свій приватний ключ.

Відповіді:


22

Керування ключами AWS EC2 не справляється із приватними ключами SSH, у яких встановлені паролі (шифруються). Він не виявляє цього і просто виходить з ладу з неінформативною помилкою.

Якщо ваш приватний ключ зберігається зашифрованим на диску (як це має бути IMO), ви повинні розшифрувати його, щоб вставити його в консоль AWS.

Замість того, щоб робити це, подумайте про дешифрування пароля локально, тому вам не доведеться надсилати свій приватний ключ AWS. Отримайте зашифровані дані пароля (кодовані base64) з журналу сервера після запуску або використання get-password-даних або відповідних запитів 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працює для мене. im on OS X
Saad Masood

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
Так, це спрацює. Але це також пропускає суть - я пояснюю випадок, коли ви завантажуєте локальний ключ.
Крейг Рінгер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.