Ich habe den Zugriff auf meine ~/.ssh/id_dsaDatei (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-agentund es mit einer gpg-Agent-Passphrase geschützt, die ich kenne. Und der private Schlüssel funktioniert gpg-agentauch 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-agentTool 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-agentmit der--hexOption. >Rufen Sie in der Eingabeaufforderung die Hex-ID des Schlüssels mit demkeyinfo --ssh-listBefehl 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-agentTool 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!).