Как использовать командную строку gpg для проверки правильности парольной фразы


Я пытаюсь автоматизировать резервное копирование с duplicity, но когда я проверяю результат, я получаю

gpg: не удалось расшифровать открытый ключ: неверная парольная фраза

Я хочу проверить, действительно ли парольная фраза, которую я использую, является парольной фразой, связанной с соответствующим секретным ключом gpg, но я все равно не вижу в параметрах командной строки gpg, чтобы сказать: "не шифруйте и не расшифровывайте ничего. Просто подтвердите, что я использую правильный пароль."

этот предполагает, что, возможно, я (еще раз) неправильно понимаю Gnu Privacy Guard. (он имеет склонность насмехаться надо мной, пока я не заплачу.)

имеет ли смысл просить gpg проверить парольную фразу? Если да, то как?

1 66

1 ответ:

для этого нет встроенного метода, но достаточно просто создать тест, который ничего не изменяет и позволяет вам просто проверить свою парольную фразу.

вы не указали, поэтому я предположу, что вы используете версию 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 file, что означает, что мы отбрасываем его и не записываем результат в терминал-Примечание: Если вы не используете какой-либо вариант Linux/Unix, этот файл может не существовать. В windows вам может потребоваться просто разрешить ему записывать подписанные данные на экран, просто опустив -o /dev/null часть.

Далее мы указываем ключ, с помощью которого мы хотим выполнить наш тест, используя --local-user 012345. Вы можете использовать KeyID для максимальной специфичности или использовать имя пользователя, в зависимости от того наилучшим образом соответствует вашим потребностям.

Далее мы указываем -as, который включает режим вывода ascii и устанавливает контекстный режим для подписи. Элемент - после этого просто говорит GnuPG, чтобы получить данные для подписи из standard-in, что является самой первой частью команды, которую мы дали echo "1234" |.

и последнее, у нас есть && echo "A message that indicates success" -- " & & "означает, что если предыдущая команда была выполнена успешно, выведите это сообщение. Это просто добавлено для ясности, потому что успех команды выше будет в противном случае не будет указано никакого выхода вообще.

Я надеюсь, что это достаточно ясно для вас, чтобы понять, что происходит, и как с ее помощью можно делать тестирование вы хотите сделать. Если что-либо непонятно или вы не понимаете, я буду рад прояснить. Удачи вам!

[EDIT] - если вы используете 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 (standard in) с помощью опции --passphrase-fd 1.