Для этого нет встроенного метода, но достаточно просто создать тест, который ничего не изменяет и позволяет вам просто проверить вашу парольную фразу.
Вы не указали, поэтому я предполагаю, что вы используете версию GnuPG ниже v2 и используете Linux с Bash в качестве интерпретатора командной строки.
Я дам команду здесь, а ниже я объясню, что делает каждая часть - (примечание: следующее относится к серии GnuPG версии 1, см. Ниже для серии GnuPG v2)
echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Что для этого нужно, так это сначала передать какой-то текст для подписи в GnuPG echo "1234" |
- потому что мы действительно не хотим ничего подписывать, это всего лишь тест, поэтому мы подпишем какой-то бесполезный текст.
Затем мы говорим gpg не использовать ключевой агент с --no-use-agent
; это важно позже, потому что, в зависимости от вашего ключевого агента, он может не вернуть «0» в случае успеха, и это все, что мы хотим сделать - проверить успешность вашей парольной фразы.
Затем мы говорим gpg поместить подписанные данные непосредственно в /dev/null
файл, то есть мы отбрасываем их и не записываем результат в терминал - ПРИМЕЧАНИЕ: если вы не используете какой-либо вариант Linux / Unix, этот файл может не существовать. В Windows вам может потребоваться просто разрешить ему записывать подписанные данные на экран, просто опуская-o /dev/null
часть.
Затем мы указываем ключ, с которым хотим провести тест, используя --local-user 012345
. Вы можете использовать KeyID для максимальной конкретности или использовать имя пользователя, в зависимости от того, что лучше всего соответствует вашим потребностям.
Затем мы указываем -as
, что включает режим вывода ascii и устанавливает контекстный режим для подписи. -
Потом просто говорит GnuPG , чтобы получить данные , которые должны быть подписаны от стандартного в, который является первой частью команды мы дали echo "1234" |
.
И наконец, у нас есть && echo "A message that indicates success"
- «&&» означает, что если предыдущая команда была успешной, распечатать это сообщение. Это просто добавлено для ясности, потому что в противном случае успешное выполнение приведенной выше команды означало бы полное отсутствие вывода.
Я надеюсь, что это достаточно ясно, чтобы вы поняли, что происходит, и как вы можете использовать это для тестирования, которое хотите провести. Если какая-то часть непонятна или вы не поняли, буду рад уточнить. Удачи!
[РЕДАКТИРОВАТЬ] - Если вы используете GnuPG v2, приведенную выше команду нужно будет немного изменить, например:
echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Причина в том, что GnuPG v2 ожидает, что кодовая фраза будет получена через агент, поэтому мы не можем отключить использование агента --no-use-agent
и получить желаемый эффект; вместо этого нам нужно сообщить GnuPG v2, что мы хотим запустить «пакетный» процесс, и получить кодовую фразу из STDIN (стандартно в) с помощью этой опции --passphrase-fd 1
.
gpg --local-user <KEYID> -as
. Это просто позволяет агенту запрашивать кодовую фразу и сообщать вам, правильна ли она (затем ничего не делает).gpg -o /dev/null --local-user <KEYID> -as <(echo 1234) && echo "The correct passphrase was entered for this key"
--passphrase-fd 1
? читать из stdout? Это работает для меня:gpg2 -aso - <(echo 1234); echo $?
. Используйте,echo RELOADAGENT | gpg-connect-agent
чтобы забыть парольные фразы.Это более короткая командная строка для проверки правильности парольной фразы:
источник
Для меня более простой способ проверить парольную фразу - использовать
gpg --passwd
сокращенную запись. Он пытается изменить парольную фразу, и шаг состоит в том, чтобы подтвердить старую парольную фразу, а затем вы можете щелкнуть «отменить» в запросе новой парольной фразы, и это сохраняет парольную фразу нетронутой.источник
Предупреждение: не используйте эхо,
gpg -o /dev/null
как предлагает верхний ответ здесь. Это приведет к тому, что / dev / null получит недопустимое разрешение и повредит/dev/null
файл. Вы можете проверить разрешение файла / dev / null при запуске этой команды, чтобы доказать это.Вы можете использовать это:
Я также создал для этого сценарий bash (он работает с Centos 8). Этот скрипт будет запрашивать парольную фразу, если она недействительна, он будет продолжать запрашивать правильную парольную фразу. Также, если вы введете неправильный или несуществующий KEY_ID в качестве аргумента, он также может подтвердить это:
Пример вывода, если в gpg-agent не кэширован пароль:
Пример вывода, если введена недопустимая кодовая фраза (запрос будет продолжаться):
Пример вывода, если введена действительная парольная фраза:
Когда допустимая кодовая фраза кэшируется, при следующем запуске этого скрипта он не будет запрашивать вас ввести кодовую фразу. Итак, этот скрипт дает решение вашего вопроса; "Просто подтвердите, что я использую правильную кодовую фразу"
источник