La password di Windows non decodificherà su AWS EC2 anche con la chiave privata corretta


21

Ho creato una nuova istanza di Windows su AWS EC2, utilizzando una coppia di chiavi creata caricando la mia chiave pubblica dal mio computer locale.

L'istanza è stata avviata correttamente, ma non decodificherà la password. Segnala:

La chiave privata deve iniziare con "----- INIZIA CHIAVE PRIVATA RSA -----" e terminare con "----- FINE CHIAVE PRIVATA RSA -----"

Sono certo di aver caricato la chiave corretta. Ho verificato che le impronte digitali corrispondono allo strano formato di impronte digitali utilizzato da AWS . Ma non decifrerà.

Ho provato a caricare il file chiave e incollarlo nel modulo.

Alla fine ho capito che non stava eliminando la nuova riga finale e ho eliminato la riga vuota nella chiave. Questo mi porta a un nuovo errore quando faccio clic su "Decrypt Password", tuttavia:

Si è verificato un errore durante la decrittografia della password.  Assicurati di aver inserito correttamente la tua chiave privata.

Risposte:


22

La gestione delle chiavi di AWS EC2 non gestisce le chiavi private SSH che hanno password impostate (sono crittografate). Non lo rileva e fallisce semplicemente con un errore non informativo.

Se la tua chiave privata è archiviata crittografata su disco (come dovrebbe essere, IMO) devi decrittografarla per incollarla nella console di AWS.

Invece di farlo, considera di decrittografare la password localmente, quindi non devi inviare la tua chiave privata ad AWS. Ottenere i dati della password crittografati (codificati Base64) dal registro del server dopo l'avvio, oppure utilizzando i dati get-password o le richieste API corrispondenti.

È quindi possibile decodificare base64 e decrittografare il risultato:

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

(Le chiavi private OpenSSH sono accettate da openssl rsautl).

Anche il problema con la mancata gestione delle chiavi protette da password con un errore utile influisce sul ec2-get-passwordcomando .

Guarda anche:


1
Grazie. Ecco una riga di comando completa che uso, seguendo i tuoi suggerimenti: aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} (usa aws-cli e jq ).
Ben Butler-Cole

base64 si lamenta -dquindi -Dfunziona per me. sono su OS X
Saad Masood,

2
In OS X, aggiungerei un altro comando a quella pipe: aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} | pbcopy ... che invia la password direttamente negli appunti.
Mark Maglana,

1
Questo dovrebbe essere contrassegnato come la risposta corretta IMHO. Dal momento che le altre risposte sono un po 'insicure rispetto a questa
webofmars

4

Senza l'uso di jq, ciò è ancora possibile, ma richiede un ulteriore analisi dei dati restituiti.

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

Ha funzionato alla grande, su WSL Ubuntu ho dovuto usare base64 -dpiuttosto che -D.
Seth Stone,

3

Questo è ciò che ha funzionato per me in macOS:

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

Sta notando che puoi sapere se il tuo file .pem è crittografato con una password cercando la seguente riga. Se è presente, è necessario decrittografarlo prima di utilizzarlo con Amazon:

Proc-Type: 4,ENCRYPTED

Per me è stata la soluzione. L'interfaccia utente di AWS non rileva che la chiave era protetta da passphrase e quindi è necessario decrittografarla prima. Questo è un po 'insicuro. Quindi rimuovere il file decrittografato in seguito.
webofmars

2

Sul mio Mac, gli argomenti della riga di comando per base64 sono diversi.

Questo ha funzionato per me:

base64 -D -i /tmp/file | openssl rsautl -decrypt -inkey /path/to/key.pem

-1
  1. vai alla dashboard ec2
  2. elimina la chiave esistente
  3. crea una nuova coppia di chiavi
  4. scegli un nome
  5. scaricare e tenerlo in locale
  6. avvia l'istanza e scarica la tua copia dell'istanza di Windows
  7. denominare la nuova coppia di chiavi con il nome utilizzato nel passaggio 4
  8. utilizzare questa chiave appena generata per decrittografare la password

questo funzionerà


1
Sì, funzionerà. Ma in qualche modo manca il punto: sto spiegando il caso in cui carichi una chiave locale.
Craig Ringer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.