Come ottenere un file .pem dalla coppia di chiavi ssh?


33

Ho creato una coppia di chiavi usando ssh-keygen e ho ottenuto i due clasic id_rsa e id_rsa.pub.

Ho importato la chiave pubblica nel mio account AWS EC2.

Ora ho creato un'istanza di Windows e per decrittografare quella password dell'istanza, la console AWS mi chiede un file .pem. Come posso ottenere quel file .pem dai miei due file id_rsa e id_rsa.pub?


2
La chiave privata è già in formato PEM e può essere utilizzata così com'è.
Michael Hampton

@MichaelHampton, questo dipenderà dalla versione di ssh-keygen e dal comando usato per generare la coppia di chiavi. Alcune versioni utilizzano RFC4716 per impostazione predefinita, anziché PEM.
austinian,

Risposte:


44

Secondo questo , questo comando può essere usato:

ssh-keygen -f id_rsa -e -m pem

Questo convertirà la tua chiave pubblica in un formato compatibile OpenSSL. La tua chiave privata è già in formato PEM e può essere utilizzata così com'è (come affermato da Michael Hampton).

Controlla se AWS non richiede un certificato (X.509) in formato PEM, che sarebbe una cosa diversa rispetto alle tue chiavi SSH.


Ma non hanno bisogno della chiave pubblica, vero? Hanno bisogno della chiave privata per decrittografare la password dalla Console AWS
Michael Bailey,

Non ho idea di cosa OP abbia bisogno di questo.
fuero,

Non sei sicuro di quanto tu abbia familiarità con AWS, ma quando esegui il rollup di un'istanza di Windows (fondamentalmente server) AWS ti mantiene la password finché non fornisci loro la tua chiave privata. Quindi ti danno la password del server. In questo modo i server Windows e Linux su AWS dipendono entrambi da chiavi private.
Michael Bailey,

1
Questo non funziona su OS X (ssh -v ==> OpenSSH_6.2p2)
chrish

3
contrariamente alla documentazione, genererà la chiave PUBLIC in formato PEM, non quella privata. attualmente ssh-keygen non supporta la conversione di chiavi private.
morgwai,

21

Usare ssh-keygenper esportare la chiave nel formato .pem ha funzionato per me.

ssh-keygen -f id_rsa.pub -m 'PEM' -e > id_rsa.pem

Quindi copia semplicemente la .pemchiave, se necessario.

Per riferimento:

  • la -f id_rsa.pubparte indica il file di input da cui leggere
  • -m 'PEM indica un tipo di file PEM
  • l' -eopzione indica che l'output verrà esportato

5

id_rsa è il file che devi utilizzare per decrittografare la password dell'istanza di Windows EC2, ma assicurati solo che il file che copi incolla non sia protetto da frase.

Ho risolto il problema ottenendo un id_rsafile temporaneamente non protetto con qualcosa del tipo:

$ openssl rsa -in ~/.ssh/id_rsa -out tmp_file.pem

2

Inizialmente, durante l'utilizzo ssh-keygen, potevo generare una chiave pubblica compatibile con AWS EC2, ma che presentava problemi con la creazione di chiavi private compatibili. Di seguito vengono create coppie di chiavi sia pubbliche che private compatibili con AWS EC2.

ssh-keygen -P "" -t rsa -b 4096 -m pem -f my-key-pair

Ecco le informazioni su ciascun parametro:

  • -P: è per passphrase. Impostato intenzionalmente su vuoto.
  • -t: specifica il tipo di chiave da creare. La coppia di chiavi AWS EC2 richiede RSA. È la mia esperienza che ciò riguarda la chiave pubblica creata.
  • -b: specifica il numero di bit nella chiave. Le lunghezze supportate sono 1024, 2048 e 4096. Se ci si connette tramite SSH mentre si utilizza l'API EC2 Instance Connect, le lunghezze supportate sono 2048 e 4096.
  • -m: specifica un formato chiave per la generazione della chiave. L'impostazione di un formato di "PEM" durante la generazione di un tipo di chiave privata supportata comporta l'archiviazione della chiave nel formato di chiave privata PEM legacy. La coppia di chiavi AWS EC2 richiede il formato legacy
  • -f: specifica il nome file di output del file chiave

risorse:

Per ulteriori informazioni su ssh-keygen, consultare:  https://man.openbsd.org/ssh-keygen.1

AWS - Coppie chiave EC2 -  https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html


Mike ha scelto di non includere la documentazione per l'opzione '-b'. Forse ovvio per alcuni, questo significa "crittografia a 4096 bit per favore". Come indicato nel documento AWS collegato, "Le lunghezze supportate sono 1024, 2048 e 4096. Se ci si connette tramite SSH mentre si utilizza l'API EC2 Instance Connect, le lunghezze supportate sono 2048 e 4096."
nclark,

@nclard, non sono sicuro del motivo per cui ho lasciato quel parametro -b. L'ho appena aggiunto.
Mike Barlow - BarDev

0

Quando si avvia un'istanza EC2, si assegna ad essa una coppia di chiavi (o nessuna). Non può essere modificato in seguito.

Solo usando quel file .pem da quella coppia di chiavi sarai in grado di decrittografare la password di Windows.

Il file .pem sarebbe stato scaricato al momento della creazione della coppia di chiavi. Non puoi ottenerlo di nuovo. Se l'hai perso, sei sfortunato.

Non è possibile utilizzare un file .pem generato dall'utente a meno che non sia stata importata quella chiave in AWS prima che l'istanza fosse avviata e assegnata all'istanza.

In poche parole, se non si dispone del file .pem originale, non è possibile ottenere la password.

Modifica: dopo aver riletto la domanda, mi rendo conto che l'OP aveva importato la sua chiave in AWS.

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.