Wie bekomme ich eine .pem-Datei von einem ssh-Schlüsselpaar?

33

Ich habe mit ssh-keygen ein Schlüsselpaar erstellt und die beiden Klassen id_rsa und id_rsa.pub erhalten.

Ich habe den öffentlichen Schlüssel in mein AWS EC2-Konto importiert.

Jetzt habe ich eine Windows-Instanz erstellt und zum Entschlüsseln dieses Instanzkennworts fragt mich die AWS-Konsole nach einer PEM-Datei. Wie kann ich diese PEM-Datei aus meinen beiden Dateien id_rsa und id_rsa.pub abrufen?

gsi-frank
quelle
2
Der private Schlüssel ist bereits im PEM-Format und kann unverändert verwendet werden.
Michael Hampton
@MichaelHampton, dies hängt von der Version von ssh-keygen und dem Befehl ab, mit dem das Schlüsselpaar generiert wird. Einige Versionen verwenden standardmäßig RFC4716 anstelle von PEM.
Austin

Antworten:

44

Nach dieser kann dieser Befehl verwendet werden:

ssh-keygen -f id_rsa -e -m pem

Dadurch wird Ihr öffentlicher Schlüssel in ein OpenSSL-kompatibles Format konvertiert. Ihr privater Schlüssel ist bereits im PEM-Format und kann unverändert verwendet werden (wie von Michael Hampton angegeben).

Überprüfen Sie noch einmal, ob AWS kein (X.509) -Zertifikat im PEM-Format anfordert, das sich von Ihren SSH-Schlüsseln unterscheidet.

fuero
quelle
Aber sie brauchen nicht den öffentlichen Schlüssel, oder? Sie benötigen den privaten Schlüssel zum Entschlüsseln ihres Kennworts über die AWS-Konsole
Michael Bailey,
Ich habe keine Ahnung, wofür OP das braucht.
Füro
Sie sind sich nicht sicher, wie gut Sie mit AWS vertraut sind, aber wenn Sie eine Windows-Instanz (im Grunde genommen einen Server) starten, behält AWS das Kennwort so lange bei Ihnen, bis Sie ihm Ihren privaten Schlüssel geben. Dann geben sie Ihnen das Server-Passwort. Auf diese Weise sind Windows- und Linux-Server unter AWS beide von privaten Schlüsseln abhängig.
Michael Bailey
1
Dies funktioniert nicht unter OS X (ssh -v ==> OpenSSH_6.2p2)
chrish
3
Im Gegensatz zur Dokumentation wird der PUBLIC-Schlüssel im PEM-Format ausgegeben, nicht der private. Derzeit unterstützt ssh-keygen die Konvertierung privater Schlüssel nicht.
Morgwai
21

Das ssh-keygenExportieren des Schlüssels im .pem-Format hat bei mir funktioniert.

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

Kopieren Sie dann einfach den .pemSchlüssel nach Bedarf.

Als Referenz:

  • Der -f id_rsa.pubTeil gibt die Eingabedatei an, aus der gelesen werden soll
  • -m 'PEM Gibt einen PEM-Dateityp an
  • Die -eOption gibt an, dass die Ausgabe exportiert wird
Matt
quelle
5

id_rsa Hierbei handelt es sich um die Datei, die Sie zum Entschlüsseln des Windows EC2-Instanzkennworts verwenden müssen. Stellen Sie jedoch sicher, dass die von Ihnen kopierte und eingefügte Datei keinen Phrasenschutz aufweist.

Ich habe das Problem gelöst, indem ich die id_rsaDatei vorübergehend ungeschützt gemacht habe:

$ openssl rsa -in ~/.ssh/id_rsa -out tmp_file.pem
gsi-frank
quelle
2

Anfangs konnte ssh-keygenich bei der Verwendung einen öffentlichen Schlüssel generieren, der mit AWS EC2 kompatibel war, aber Probleme beim Erstellen von privaten Schlüsseln hatte, die kompatibel waren. Im Folgenden werden sowohl öffentliche als auch private Schlüsselpaare erstellt, die mit AWS EC2 kompatibel sind.

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

Hier sind Informationen zu jedem Parameter:

  • -P: steht für eine Passphrase. Absichtlich auf leer gesetzt.
  • -t: Gibt den Typ des zu erstellenden Schlüssels an. Für das AWS EC2-Schlüsselpaar ist RSA erforderlich. Ich habe die Erfahrung gemacht, dass dies mit dem erstellten öffentlichen Schlüssel zusammenhängt.
  • -b: Gibt die Anzahl der Bits im Schlüssel an. Die unterstützten Längen sind 1024, 2048 und 4096. Wenn Sie unter Verwendung der EC2 Instance Connect-API eine SSH-Verbindung herstellen, sind die unterstützten Längen 2048 und 4096.
  • -m: Gibt ein Schlüsselformat für die Schlüsselgenerierung an. Wenn Sie beim Generieren eines unterstützten privaten Schlüsseltyps das Format „PEM“ festlegen, wird der Schlüssel im alten privaten PEM-Schlüsselformat gespeichert. AWS EC2-Schlüsselpaar benötigen das Legacy-Format
  • -f: Gibt den Ausgabedateinamen der Schlüsseldatei an

Ressourcen:

Weitere Informationen zu ssh-keygen finden Sie unter:  https://man.openbsd.org/ssh-keygen.1

AWS - EC2-Schlüsselpaare -  https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

Mike Barlow - BarDev
quelle
Mike hat entschieden, keine Dokumentation für die Option '-b' einzuschließen. Für manche vielleicht offensichtlich, bedeutet das "4096-Bit-Verschlüsselung bitte". Im verknüpften AWS-Dokument heißt es: "Die unterstützten Längen sind 1024, 2048 und 4096. Wenn Sie unter Verwendung der EC2 Instance Connect-API eine SSH-Verbindung herstellen, sind die unterstützten Längen 2048 und 4096."
nclark
@nclard, Ich bin mir nicht sicher, warum ich den Parameter -b ausgelassen habe. Fügte es einfach hinzu.
Mike Barlow - BarDev
0

Wenn Sie eine EC2-Instanz starten, weisen Sie ihr ein Schlüsselpaar (oder keines) zu. Sie kann danach nicht mehr geändert werden.

Nur mit dieser PEM-Datei aus diesem Schlüsselpaar können Sie das Windows-Kennwort entschlüsseln.

Die PEM-Datei wurde heruntergeladen, als das Schlüsselpaar erstellt wurde. Sie können es nicht wieder bekommen. Wenn Sie es verloren haben, haben Sie kein Glück.

Sie können keine selbst erstellte PEM-Datei verwenden, es sei denn, Sie haben diesen Schlüssel vor dem Start der Instanz in AWS importiert und der Instanz zugewiesen.

Kurz gesagt, wenn Sie nicht über die ursprüngliche PEM-Datei verfügen, können Sie das Kennwort nicht abrufen.

Bearbeiten: Nach dem erneuten Lesen der Frage stelle ich fest, dass das OP seinen Schlüssel in AWS importiert hat.

Matt Houser
quelle