Il n'y a pas de méthode intégrée pour faire cela, mais c'est assez simple pour créer un test qui ne modifie rien et vous permet de simplement vérifier votre phrase de passe.
Vous n'avez pas spécifié, donc je suppose que vous utilisez la version GnuPG inférieure à la v2 et que vous êtes sous Linux avec Bash pour votre interpréteur de ligne de commande.
Je vais donner la commande ici et ci-dessous, je vais expliquer ce que fait chaque partie - (note: ce qui suit est pour la série GnuPG version 1, voir ci-dessous pour la série GnuPG v2)
echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Ce que cela fait, c'est d'abord, envoyer du texte à signer à GnuPG echo "1234" |
- parce que nous ne voulons vraiment rien signer, c'est juste un test, nous allons donc signer du texte inutile.
Ensuite, nous disons à gpg de ne pas utiliser l'agent clé avec --no-use-agent
; ceci est important plus tard car, en fonction de votre agent clé, il peut ne pas retourner "0" en cas de succès, et c'est tout ce que nous voulons faire - vérifier le succès de votre phrase de passe.
Ensuite, nous demandons à gpg de placer les données signées directement dans le /dev/null
fichier, ce qui signifie que nous les supprimons et que nous n'écrivons pas le résultat dans le terminal - REMARQUE: si vous n'utilisez pas une variante de Linux / Unix, ce fichier peut ne pas exister. Sous Windows, vous devrez peut-être simplement lui permettre d'écrire les données signées à l'écran en omettant simplement la -o /dev/null
partie.
Ensuite, nous spécifions la clé avec laquelle nous voulons faire notre test en utilisant --local-user 012345
. Vous pouvez utiliser le KeyID pour une spécificité maximale, ou utiliser un nom d'utilisateur, selon vos besoins.
Ensuite, nous spécifions -as
, qui active le mode de sortie ascii et définit le mode de contexte pour la signature. La -
suite dit simplement à GnuPG d'obtenir les données à signer à partir de l'entrée standard, qui est la toute première partie de la commande que nous avons donnée echo "1234" |
.
Et enfin, nous avons && echo "A message that indicates success"
- le "&&" signifie, si la commande précédente a réussi, imprimer ce message. Ceci est juste ajouté pour plus de clarté, car le succès de la commande ci-dessus serait autrement indiqué par aucune sortie du tout.
J'espère que c'est assez clair pour que vous compreniez ce qui se passe et comment vous pouvez l'utiliser pour effectuer les tests que vous souhaitez faire. Si une partie n'est pas claire ou que vous ne comprenez pas, je serai heureux de clarifier. Bonne chance!
[EDIT] - Si vous utilisez GnuPG v2, la commande ci-dessus devra être légèrement modifiée, comme ceci:
echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
La raison en est que GnuPG v2 s'attend à ce que la phrase secrète soit récupérée via un agent, nous ne pouvons donc pas désactiver l'utilisation de l'agent avec --no-use-agent
et avoir l'effet souhaité; à la place, nous devons dire à GnuPG v2 que nous voulons exécuter un processus "batch", et récupérer la phrase de passe de STDIN (standard in) en utilisant l'option --passphrase-fd 1
.
gpg --local-user <KEYID> -as
. Cela permet simplement à l'agent de demander la phrase de passe et de vous dire si elle était correcte (puis ne fait rien).gpg -o /dev/null --local-user <KEYID> -as <(echo 1234) && echo "The correct passphrase was entered for this key"
--passphrase-fd 1
? lire à partir de stdout? Cela fonctionne pour moi:gpg2 -aso - <(echo 1234); echo $?
. Utilisezecho RELOADAGENT | gpg-connect-agent
pour oublier les mots de passe.Ceci est une ligne de commande plus courte pour vérifier si la phrase de passe est correcte:
la source
Pour moi, la manière simpliste de vérifier la phrase secrète est d'utiliser un
gpg --passwd
raccourci. Il essaie de changer la phrase de passe et l'étape consiste à confirmer l'ancienne phrase de passe, puis vous pouvez cliquer sur `` Annuler '' sur la nouvelle invite de phrase de passe et cela garde la phrase de passe intacte.la source
Attention, n'utilisez pas l'écho
gpg -o /dev/null
comme suggéré par la réponse en haut ici. Cela entraînera / dev / null d'avoir une autorisation invalide et corrompre le/dev/null
fichier. Vous pouvez vérifier l'autorisation du fichier / dev / null lors de l'exécution de cette commande pour le prouver.Vous pouvez utiliser ceci:
J'ai également créé un script bash pour cela (celui-ci fonctionne avec Centos 8). Ce script demandera une phrase de passe, si elle n'est pas valide, il continuera à demander de saisir une phrase de passe valide. De plus, si vous entrez un KEY_ID incorrect ou inexistant en tant qu'argument, il peut également le valider:
Exemple de sortie si aucun mot de passe n'est mis en cache dans gpg-agent:
Exemple de sortie si une phrase de passe invalide est entrée (elle continuera à demander):
Exemple de sortie si une phrase de passe valide est entrée:
Lorsqu'une phrase de passe valide est mise en cache, la prochaine fois que vous exécuterez ce script, il ne vous demandera pas de saisir une phrase de passe. Donc ce script donne la solution à votre question; "Confirmez simplement que j'utilise la bonne phrase de passe"
la source