Ich habe den Zugriff auf meine ~/.ssh/id_dsa
Datei (OpenSSH-Datei mit privatem Schlüssel im DSA-Algorithmus) verloren, weil ich die Passphrase vergessen habe.
Aber ursprünglich habe ich es importieren lassen gpg-agent
und es mit einer gpg-Agent-Passphrase geschützt, die ich kenne. Und der private Schlüssel funktioniert gpg-agent
auch jetzt noch einwandfrei, obwohl ich jetzt die OpenSSH-Datei mit dem privaten Schlüssel unter Verwendung der darin gespeicherten Daten rekonstruieren möchte gpg-agent
.
Mit dem gpg-connect-agent
Tool und der folgenden Befehlsfolge kann ich den privaten Schlüssel (im Hex / ASCII-Format) extrahieren, obwohl ich nicht weiß, wie ich ihn in das ursprüngliche OpenSSH-Dateiformat für private Schlüssel rekonstruieren kann:
- Beginnen Sie
gpg-connect-agent
mit der--hex
Option. >
Rufen Sie in der Eingabeaufforderung die Hex-ID des Schlüssels mit demkeyinfo --ssh-list
Befehl ab (genauer gesagt, es ist das dritte Feld, das die Hex-ID des Schlüssels angibt).>
Führen Sie in der Eingabeaufforderung auskeywrap_key --export
.>
Führen Sie in der Eingabeaufforderungexport_key <enter hex ID from step 2>
oder ausexport_key --openpgp <enter hex ID from step 2>
.
Nachdem das gpg-connect-agent
Tool nun zur Eingabe der Passphrase aufgefordert, diese empfangen und bestätigt hat, zeigt es einige Dutzend Zeilen mit Hex- und ASCII-Codes an, von denen ich sehr vermute, dass sie mein ursprünglich importierter privater SSH-Schlüssel sind.
Dann wird angezeigt OK
, was sicher bedeutet, dass die Operation erfolgreich war.
Angenommen, es wird tatsächlich mein privater SSH-Schlüssel angezeigt (gemäß "help export_key" wurde auf dem Bildschirm eine mit aeswrap-128 verschlüsselte Version des Schlüssels ausgegeben; höchstwahrscheinlich mit meiner bekannten gpg-agent-Passphrase verschlüsselt) Es wäre sehr dankbar, diese Informationen in das traditionelle SSH-Format für private Schlüssel zu konvertieren (ein Perl / Python / Shell / C-Programm wäre ein Bonus!).