Es gibt keine eingebaute Methode, 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 nichts angegeben, daher gehe ich davon aus, dass Sie eine GnuPG-Version unter Version 2 verwenden und unter Linux mit Bash für Ihren Befehlszeileninterpreter arbeiten.
Ich werde den Befehl hier geben und unten werde ich erklären, 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"
Dazu müssen Sie zunächst einen Text an GnuPG senden, mit echo "1234" |
dem Sie ihn signieren möchten. Da wir eigentlich nichts signieren möchten, ist dies nur ein Test. Wir werden also nutzlosen Text signieren.
Als nächstes weisen wir gpg an, den Schlüsselagenten nicht mit zu verwenden --no-use-agent
. Dies ist später wichtig, da abhängig von Ihrem Schlüsselagenten bei Erfolg möglicherweise nicht "0" zurückgegeben wird. Dies ist alles, was wir tun möchten - den Erfolg Ihrer Passphrase überprüfen.
Als Nächstes weisen wir gpg an, die signierten Daten direkt in die /dev/null
Datei einzufügen. Dies bedeutet, dass wir sie verwerfen und das Ergebnis nicht in das Terminal schreiben. HINWEIS: Wenn Sie keine Variante von Linux / Unix verwenden, ist diese Datei möglicherweise nicht vorhanden. Unter Windows müssen Sie möglicherweise nur zulassen, dass die signierten Daten auf den Bildschirm geschrieben werden, indem Sie das -o /dev/null
Teil einfach weglassen .
Als nächstes geben wir den Schlüssel an, mit dem wir unseren Test durchführen möchten --local-user 012345
. Sie können die KeyID für maximale Spezifität verwenden oder einen Benutzernamen verwenden, je nachdem, was Ihren Anforderungen am besten entspricht.
Als nächstes geben wir an -as
, wodurch der ASCII-Ausgabemodus aktiviert und der Kontextmodus für das Signieren festgelegt wird. Im -
Anschluss wird GnuPG lediglich angewiesen, die zu signierenden Daten vom Standard-In zu erhalten. Dies ist der allererste Teil des von uns erteilten Befehls echo "1234" |
.
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 zur Verdeutlichung hinzugefügt, da der Erfolg des obigen Befehls ansonsten 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 Tests durchzuführen, die Sie durchführen möchten. Wenn ein Teil unklar ist oder Sie nicht verstehen, werde ich gerne klären. Viel Glück!
[BEARBEITEN] - Wenn Sie GnuPG v2 verwenden, muss der obige Befehl wie folgt geringfügig 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 nicht deaktivieren --no-use-agent
und haben den gewünschten Effekt. Stattdessen müssen wir GnuPG v2 mitteilen, dass wir einen "Batch" -Prozess ausführen und die Passphrase mithilfe der Option aus STDIN (Standard in) abrufen möchten --passphrase-fd 1
.
gpg --local-user <KEYID> -as
. Dadurch kann der Agent nur nach der Passphrase fragen und Ihnen mitteilen, ob diese korrekt war (dann wird nichts unternommen).gpg -o /dev/null --local-user <KEYID> -as <(echo 1234) && echo "The correct passphrase was entered for this key"
--passphrase-fd 1
? von stdout lesen? Das funktioniert bei mir :gpg2 -aso - <(echo 1234); echo $?
. Verwenden Sieecho RELOADAGENT | gpg-connect-agent
diese Option, um Passphrasen zu vergessen.Dies ist eine kürzere Befehlszeile, um zu überprüfen, ob die Passphrase in Ordnung ist:
quelle
Für mich besteht die einfachste Möglichkeit, die Passphrase zu überprüfen, darin, eine
gpg --passwd
Kurzschrift zu verwenden . Es wird versucht, die Passphrase zu ändern. Der Schritt besteht darin, die alte Passphrase zu bestätigen. Anschließend können Sie an der neuen Passphrase-Eingabeaufforderung auf "Abbrechen" klicken. Dadurch bleibt die Passphrase erhalten.quelle
Warnung Verwenden Sie kein Echo,
gpg -o /dev/null
wie in der Top-Antwort hier vorgeschlagen. Dies führt dazu, dass / dev / null eine ungültige Berechtigung hat und die/dev/null
Datei beschädigt wird. Sie können die Berechtigung der Datei / dev / null überprüfen, wenn Sie diesen Befehl ausführen, um dies zu beweisen.Sie können dies verwenden:
Ich habe auch ein Bash-Skript dafür erstellt (Dieses funktioniert mit Centos 8). Dieses Skript fragt nach der Passphrase. Wenn diese ungültig ist, werden Sie weiterhin aufgefordert, eine gültige Passphrase einzugeben. Auch wenn Sie eine falsche oder nicht vorhandene KEY_ID als Argument eingeben, kann dies ebenfalls überprüft werden:
Beispielausgabe, wenn in gpg-agent kein Passwort zwischengespeichert ist:
Beispielausgabe, wenn eine ungültige Passphrase eingegeben wird (es wird immer wieder gefragt):
Beispielausgabe bei Eingabe einer gültigen Passphrase:
Wenn eine gültige Passphrase zwischengespeichert wird, werden Sie beim nächsten Ausführen dieses Skripts nicht aufgefordert, eine Passphrase einzugeben. Dieses Skript bietet also die Lösung für Ihre Frage. "Bestätigen Sie einfach, dass ich die richtige Passphrase verwende."
quelle