it-swarm.com.de

Wie Sie mit der gpg-Befehlszeile überprüfen, ob die Passphrase korrekt ist

Ich versuche, Sicherungen mit duplicity zu automatisieren, aber wenn ich das Ergebnis teste, erhalte ich

gpg: Entschlüsselung des öffentlichen Schlüssels fehlgeschlagen: Ungültige Passphrase

Ich möchte überprüfen, ob es sich bei der von mir verwendeten Passphrase tatsächlich um die Passphrase handelt, die mit dem entsprechenden gpg-Geheimschlüssel verknüpft ist. In den gpg-Befehlszeilenoptionen wird jedoch nicht angezeigt, dass Sie "Keine Verschlüsselung oder Entschlüsselung vornehmen" möchten. Bestätigen Sie einfach Ich verwende die richtige Passphrase. "

Dies deutet darauf hin, dass ich Gnu Privacy Guard (noch einmal) missverstehe. (Es hat eine Vorliebe, mich zu verspotten, bis ich weine.)

Ist es sinnvoll, gpg zu bitten, eine Passphrase zu überprüfen? Wenn das so ist, wie?

76
Oddthinking

Es gibt keine eingebaute Methode, um dies zu tun, aber es ist einfach genug, einen Test zu erstellen, der nichts ändert und es Ihnen ermöglicht, nur Ihre Passphrase zu überprüfen.

Sie haben es nicht angegeben, daher gehe ich davon aus, dass Sie eine GnuPG-Version kleiner als v2 verwenden und unter Linux mit Bash als Befehlszeileninterpreter arbeiten.

Ich gebe den Befehl hier und unten erkläre ich, was jeder Teil tut - (Hinweis: Das Folgende ist für GnuPG-Serie Version 1, siehe unten für GnuPG-Serie v2)

echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"

Zuerst müssen Sie Text zum Signieren mit echo "1234" | An GnuPG weiterleiten - da wir eigentlich nichts signieren möchten, handelt es sich nur um einen Test. Wir werden also einen unbrauchbaren Text signieren.

Als Nächstes weisen wir gpg an, den Schlüsselagenten nicht mit --no-use-agent Zu verwenden. Dies ist später wichtig, da abhängig von Ihrem Schlüsselagenten möglicherweise nicht "0" zurückgegeben wird, und das ist alles, was wir tun möchten - überprüfen Sie, ob Ihre Passphrase erfolgreich ist.

Als Nächstes weisen wir gpg an, die signierten Daten direkt in die Datei /dev/null Zu schreiben, dh, wir verwerfen sie und schreiben das Ergebnis nicht in das Terminal. HINWEIS: Wenn Sie keine Linux/Unix-Variante verwenden, ist dies der Fall Datei existiert möglicherweise nicht. Unter Windows müssen Sie möglicherweise nur zulassen, dass die signierten Daten auf den Bildschirm geschrieben werden, indem Sie den Teil -o /dev/null Weglassen.

Als Nächstes geben wir den Schlüssel an, mit dem wir unseren Test durchführen möchten, indem wir --local-user 012345 Verwenden. Sie können die KeyID für maximale Spezifität verwenden oder einen Benutzernamen verwenden, der Ihren Anforderungen am besten entspricht.

Als nächstes geben wir -as An, das den ASCII-Ausgabemodus aktiviert und den Kontextmodus für das Signieren festlegt. Das anschließende - Weist GnuPG an, die zu signierenden Daten von standard-in abzurufen. Dies ist der allererste Teil des Befehls, den wir echo "1234" | Gegeben haben.

Und zuletzt haben wir && echo "A message that indicates success" - das "&&" bedeutet, wenn der vorherige Befehl erfolgreich war, drucken Sie diese Nachricht. Dies wird nur der Übersichtlichkeit halber hinzugefügt, da der Erfolg des obigen Befehls andernfalls durch überhaupt keine Ausgabe angezeigt würde.

Ich hoffe, das ist klar genug, damit Sie verstehen, was los ist und wie Sie es verwenden können, um die gewünschten Tests durchzuführen. Wenn irgendein Teil unklar ist oder Sie es nicht verstehen, kläre ich es gerne. Viel Glück!

[BEARBEITEN] - Wenn Sie GnuPG v2 verwenden, muss der obige Befehl wie folgt leicht geändert werden:

echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"

Der Grund dafür ist, dass GnuPG v2 erwartet, dass die Passphrase über einen Agenten abgerufen wird. Daher können wir die Verwendung des Agenten mit --no-use-agent Nicht deaktivieren und haben den gewünschten Effekt. Stattdessen müssen wir GnuPG v2 mitteilen, dass wir einen "Batch" -Prozess ausführen möchten, und die Passphrase von STDIN (Standard in) mit der Option --passphrase-fd 1 abrufen.

106
kylehuff

Kürzere Befehlszeile, um zu überprüfen, ob die Passphrase in Ordnung ist

gpg --export-secret-keys -a <KEYID> > /dev/null && echo OK

5
Guest