Ich habe eine PEM-Datei, die ich einem laufenden ssh-Agenten hinzufüge:
$ file query.pem
query.pem: PEM RSA private key
$ ssh-add ./query.pem
Identity added: ./query.pem (./query.pem)
$ ssh-add -l | grep query
2048 ef:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX ./query.pem (RSA)
Wie kann ich den Fingerabdruck des Schlüssels (der in ssh-agent angezeigt wird) direkt aus der Datei abrufen? Ich weiß, ssh-keygen -l -f some_key
funktioniert für "normale" SSH-Schlüssel, aber nicht für PEM-Dateien.
Wenn ich ssh-keygen in der .pem-Datei versuche, erhalte ich:
$ ssh-keygen -l -f ./query.pem
key_read: uudecode PRIVATE KEY----- failed
key_read: uudecode PRIVATE KEY----- failed
./query.pem is not a public key file.
Dieser Schlüssel beginnt mit:
-----BEGIN RSA PRIVATE KEY-----
MIIEp.... etc.
im Gegensatz zu einem "normalen" privaten Schlüssel, der wie folgt aussieht:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,E15F2.... etc.
ssh
openssl
certificate
fingerprint
unbekannte
quelle
quelle
.ssh/id_rsa
von OpenSSH mit allen Standardeinstellungen erstellte Datei ist eine PEM-Datei. Die privaten Schlüssel sind standardmäßig PEM-codiert. Tatsächlich können Sie RSA-Schlüssel verwenden, die Sie mit OpenSSL direkt mit OpenSSH generieren.ssh-keygen -l
kann eine Privatekey-Datei nicht gelesen werden, obwohl anderessh-keygen
(undssh*
) Operationen dies tun. Bei derssh-keygen
Generierung eines Schlüssels werden jedoch sowohl die private Schlüsseldateiid_rsa
als auch eine entsprechende publickey-Datei mit.pub
hinzugefügtem Schlüssel geschriebenid_rsa.pub
. Ältere Benutzerssh-keygen -l
werden versuchen.pub
, den von Ihnen angegebenen Dateinamen zu ergänzen und diese publickey-Datei zu lesen.Antworten:
Wenn Sie den Fingerabdruck Ihrer verlorenen öffentlichen Schlüsseldatei abrufen möchten, können Sie ihn aus der privaten Schlüsseldatei wiederherstellen :
Dann können Sie den öffentlichen Fingerabdruck ermitteln:
Auf einigen neueren Systemen wird der SHA256-Fingerabdruck des Schlüssels gedruckt. Sie können den MD5-Fingerabdruck des Schlüssels (das Doppelpunktformular) mit der folgenden Option drucken
-E
:Oder als eine Befehlszeile :
quelle
AWS bietet unter " Überprüfen des Fingerabdrucks Ihres Schlüsselpaars " zwei Einzeiler, mit denen das Problem behoben werden kann. Dies hängt davon ab, wie Ihr Schlüssel erstellt wurde.
Wenn Sie Ihr Schlüsselpaar mit AWS erstellt haben:
Oder, wenn Sie Ihr Schlüsselpaar mit einem Drittanbieter-Tool erstellt haben:
(Fingerabdrücke in der obigen Ausgabe korrigiert)
quelle
Hier ist ein Einzeiler, der tun sollte, was Sie wollen, ohne dass lokal eine öffentliche Schlüsseldatei erstellt werden muss.
Hierbei wird die Zeichenfolge bash here
<<<
verwendet, um stdin als reguläre Datei (/dev/stdin
) und nicht als Pipe zur Verfügung zu haben, dassh-keygen
nur eine Datei bearbeitet wird.Ab Release 7.2 von openssh
ssh-keygen
werden Fingerabdrücke von Standardeingaben unterstützt:Beachten Sie, dass dieser Befehl mit privaten Schlüsseln abbricht, die eine Passphrase verwenden und keinen Agenten verwenden. Es sollte mit PEM-Dateien funktionieren, die von AWS oder OpenStack generiert wurden und keine Passphrasen verwenden.
Weitere Informationen finden Sie unter https://stackoverflow.com/questions/2635360/ssh-keygen-accepting-stdin .
quelle
-l
auch das Lesen einer Privatekey- Datei (aber nicht von stdin) unterstützt.Sie erhalten den Fingerabdruck nicht aus der privaten Schlüsseldatei, sondern aus der öffentlichen Schlüsseldatei.
Tatsächlich hat Ihnen ssh-keygen bereits Folgendes gesagt:
Führen Sie es gegen die öffentliche Hälfte des Schlüssels aus, und es sollte funktionieren.
Allgemeiner gesagt
Denken Sie darüber nach: Der Grund für die Existenz des Fingerabdrucks ist, dass Sie den öffentlichen Schlüssel identifizieren können. Tatsächlich ist das Abrufen eines Hashs des privaten Schlüssels ein potenzielles Sicherheitsproblem, das nicht nur für den Server unbrauchbar ist (der nicht einmal den fraglichen privaten Schlüssel hat).
Sobald Sie den öffentlichen Schlüssel haben, müssen Sie überprüfen, ob der Client die entsprechende private Hälfte hält. Da Sie bereits wissen, welche Schlüssel Sie überprüfen möchten, benötigen Sie keinen Fingerabdruck.
quelle
ssh-keygen
mit einer privaten RSA-Schlüsseldatei, die die zusätzlichen Informationen am Anfang enthält (siehe meinen ersten Beitrag), aber nicht mit diesem. .ssh-keygen -yf
funktioniert dies.