AWS EC2 zeigt den SSH2-Fingerabdruck, nicht den OpenSSH-Fingerabdruck, den alle erwarten. Dies wird in der Benutzeroberfläche nicht angegeben.
Es werden auch zwei völlig unterschiedliche Arten von Fingerabdrücken angezeigt, je nachdem, ob der Schlüssel in AWS generiert und heruntergeladen wurde oder ob Sie Ihren eigenen öffentlichen Schlüssel hochgeladen haben.
Fingerabdrücke generiert mit
ssh-keygen -l -f id_rsa
wird nicht mit dem übereinstimmen, was EC2 zeigt. Sie können entweder die AWS-API-Tools verwenden, um mit dem ec2-fingerprint-key
Befehl einen Fingerabdruck zu generieren , oder OpenSSL verwenden, um dies zu tun.
Beachten Sie, dass Sie einen anderen Fingerabdruck erhalten , wenn Sie ursprünglich einen Schlüssel in AWS generiert und ihn dann erneut hochgeladen haben (z. B. in eine andere Region), da der SSH2-RSA-Fingerabdruck und nicht der von Ihnen angezeigte sha1-Wert für Schlüssel verwendet wird auf AWS generiert.
Spaß, hey?
Oben test-generated
wurde mit AWS EC2 generiert. test-generated-reuploaded
ist der öffentliche Schlüssel aus dem privaten Schlüssel, den AWS generiert, extrahiert ssh-keygen -y
und erneut hochgeladen hat. Der dritte Schlüssel test-uploaded
ist ein lokal generierter Schlüssel, der lokale ssh-keygen -l
Fingerabdruck jedoch b2:2c:86:d6:1e:58:c0:b0:15:97:ab:9b:93:e7:4e:ea
.
$ ssh-keygen -l -f theprivatekey
2048 b2:2c:86:d6:1e:58:c0:b0:15:97:ab:9b:93:e7:4e:ea
$ openssl pkey -in theprivatekey -pubout -outform DER | openssl md5 -c
Enter pass phrase for id_landp:
(stdin)= 91:bc:58:1f:ea:5d:51:2d:83:d3:6b:d7:6d:63:06:d2
Lokal erzeugte Schlüssel
Wie Daniel in den AWS-Foren demonstriert hat, können Sie OpenSSL verwenden, um den Fingerabdruck in der Form zu generieren, die von AWS zum Anzeigen von Fingerabdrücken für hochgeladene öffentliche Schlüssel (SSH2 MD5) verwendet wird.
7a:58:3a:a3:df:ba:a3:09:be:b5:b4:0b:f5:5b:09:a0
Sie können generiert werden, indem der öffentliche Teil aus dem privaten Schlüssel extrahiert und mit folgendem Hashing verarbeitet wird:
openssl pkey -in id_rsa -pubout -outform DER | openssl md5 -c
In AWS generierte Schlüssel
Wenn der in der AWS-Konsole angezeigte Schlüsselfingerabdruck länger ist, handelt es sich um einen privaten Schlüssel, der in AWS generiert wurde. Beispiel:
ea:47:42:52:2c:25:43:76:65:f4:67:76:b9:70:b4:64:12:00:e4:5a
In diesem Fall müssen Sie den folgenden Befehl verwenden, der auch von Daniel in den AWS-Foren angezeigt wird, um einen sha1-Hash auf der Grundlage des privaten Schlüssels zu generieren:
openssl pkcs8 -in aws_private.pem -nocrypt -topk8 -outform DER | openssl sha1 -c
in der heruntergeladenen AWS-generierten privaten Schlüssel- / Zertifikatdatei. Es funktioniert auch mit Schlüsseln, die Sie in das OpenSSH-Format konvertiert haben.
Verweise
Sehen:
ssh
Befehl, mit neueren Versionen benötigen Sie eine Option -E md5 Format angeben:ssh-keygen -E md5 -l -f id_rsa
.Wenn Sie nur öffentliche Schlüssel haben, können Sie den AWS-Fingerabdruck wie folgt generieren:
quelle
In den AWS-Dokumenten befindet sich eine Ressource: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#verify-key-pair-fingerprints
Wenn Sie Ihr Schlüsselpaar mit AWS erstellt haben, können Sie mit den OpenSSL-Tools einen Fingerabdruck aus der privaten Schlüsseldatei generieren:
Kopieren
Wenn Sie Ihr Schlüsselpaar mit einem Drittanbieter-Tool erstellt und den öffentlichen Schlüssel auf AWS hochgeladen haben, können Sie mit den OpenSSL-Tools einen Fingerabdruck aus der privaten Schlüsseldatei auf Ihrem lokalen Computer generieren:
Kopieren
Die Ausgabe sollte mit dem Fingerabdruck übereinstimmen, der in der Konsole angezeigt wird.
quelle
Das benutze ich:
Dadurch wird der Fingerabdruck aus dem öffentlichen Schlüssel generiert, ähnlich wie bei einigen der oben genannten.
quelle
Für diejenigen von uns, die Python verwenden
quelle
ValueError: PEM encryption format not supported.
Hier ist ein Skript, das ich verwende. Fügen Sie den Skriptpfad zu env hinzu. Vielen Dank an J.Doe für die Antwort
quelle
Nur für den Fall, dass dies nützlich sein könnte: https://ssh-vault.com/post/fingerprint/
zum Beispiel:
Gibt den Fingerabdruck für den Benutzer aus, der dem von AWS verwendeten Format entspricht.
quelle
Java (mit BouncyCastle). Wenn die AWS-Konsole kürzere Schlüssel anzeigt, versuchen Sie es mit MD5. (SHA1: 20 Bytes, MD5: 16 Bytes).
quelle