Hasło systemu Windows nie odszyfrowuje na AWS EC2, nawet z prawidłowym kluczem prywatnym

21

Utworzyłem nową instancję Windows na AWS EC2, używając pary kluczy, którą utworzyłem, przesyłając mój klucz publiczny z mojego komputera lokalnego.

Instancja uruchomiła się dobrze, ale nie odszyfruje hasła. Raportuje:

Klucz prywatny musi zaczynać się od „----- ROZPOCZNIJ KLUCZ PRYWATNY RSA -----” i kończyć na „----- KONIEC KLUCZ PRYWATNY RSA -----”

Jestem pewien, że przesłałem prawidłowy klucz. Sprawdziłem, że odciski palców pasują do dziwnego formatu odcisków palców używanego przez AWS . Ale to po prostu się nie odszyfrowuje.

Próbowałem załadować plik klucza i wkleić go do formularza.

W końcu doszedłem do wniosku, że nie usuwa on nowej linii i usunąłem pustą linię w kluczu. To powoduje, że po kliknięciu „Odszyfruj hasło” pojawia się nowy błąd:

Podczas odszyfrowywania hasła wystąpił błąd.  Upewnij się, że poprawnie wpisałeś swój klucz prywatny.

Craig Ringer
źródło

Odpowiedzi:

22

Zarządzanie kluczami AWS EC2 nie radzi sobie z kluczami prywatnymi SSH, które mają ustawione hasła (są szyfrowane). Nie wykrywa tego i po prostu kończy się niepowodzeniem z nieinformacyjnym błędem.

Jeśli twój klucz prywatny jest przechowywany zaszyfrowany na dysku (tak jak powinno być, IMO), musisz go odszyfrować, aby wkleić go do konsoli AWS.

Zamiast tego, rozważ lokalne odszyfrowanie hasła, abyś nie musiał wysyłać klucza prywatnego do AWS. Pobierz zaszyfrowane hasło (kodowane base64) z dziennika serwera po uruchomieniu lub używając danych get-password-data lub odpowiednich żądań API.

Następnie możesz base64 zdekodować i odszyfrować wynik:

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

(Klucze prywatne OpenSSH są akceptowane przez openssl rsautl).

Problem z nieumiejętnością obsługi kluczy chronionych hasłem z użytecznym błędem również wpływa na ec2-get-passwordpolecenie .

Zobacz też:

Craig Ringer
źródło
1
Dzięki. Oto pełna linia poleceń, której używam, zgodnie z twoimi sugestiami: aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} (używa aws-cli i jq ).
Ben Butler-Cole
base64 narzeka, -dwięc -Ddziała dla mnie. im w OS X
Saad Masood
2
W OS X dodałbym jeszcze jedno polecenie do tego potoku: aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} | pbcopy ... który wysyła hasło prosto do twojego schowka.
Mark Maglana,
1
Należy to zaznaczyć jako prawidłową odpowiedź IMHO. Ponieważ inne odpowiedzi są nieco niepewne w porównaniu do tego
webofmars
4

Bez użycia jq jest to nadal możliwe, ale wymaga dodatkowej analizy składni zwróconych danych.

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
Ben
źródło
Działa świetnie, na WSL Ubuntu musiałem base64 -draczej użyć -D.
Seth Stone
3

Oto, co działało dla mnie w macOS:

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

Warto zauważyć, że możesz stwierdzić, czy plik .pem jest zaszyfrowany hasłem, szukając następującego wiersza. Jeśli jest obecny, musisz go odszyfrować przed użyciem go z Amazon:

Proc-Type: 4,ENCRYPTED
Django Reinhardt
źródło
Dla mnie to było rozwiązanie. Interfejs AWS nie wykrywa, że ​​klucz był chroniony hasłem, a następnie należy go najpierw odszyfrować. Jest to jednak trochę niepewne. Więc usuń odszyfrowany plik później.
webofmars,
2

Na moim komputerze Mac argumenty wiersza polecenia dla base64 są różne.

To działało dla mnie:

base64 -D -i /tmp/file | openssl rsautl -decrypt -inkey /path/to/key.pem
Dan
źródło
-1
  1. przejdź do deski rozdzielczej ec2
  2. usuń istniejący klucz
  3. utwórz nową parę kluczy
  4. Wybierz nazwę
  5. pobierz i przechowuj w lokalnej wersji
  6. uruchom instancję i pobierz swoją kopię instancji systemu Windows
  7. nazwij nową parę kluczy o nazwie użytej w kroku 4
  8. użyj tego nowo wygenerowanego klucza do odszyfrowania hasła

to zadziała

Arun Mohan
źródło
1
Tak, zadziała. Ale w pewnym sensie nie ma sensu - wyjaśniam przypadek, w którym przesyłasz klucz lokalny.
Craig Ringer