$ DISPLAY= gpg2 --yes --batch --no-tty < file.gpg
┌─────────────────────────────────────────────────────┐
│ Enter passphrase                                    │
│                                                     │
│                                                     │
│ Passphrase ________________________________________ │
│                                                     │
│                                                     │
|       <OK>                             <Cancel>     │
└─────────────────────────────────────────────────────┘

Без DISPLAY= вместо этого отображается окно GUI. В любом случае он ожидает ввода, прерывая цикл.

Как сделать так, чтобы gpg2 использовал только gpg-agent и никогда не прерывал обработку запросов?

Поддельный --passphrase заставляет удалить ключ из агента.

2 ответа2

1

Вы можете разрешить режим обратной петли в gpg-agent.conf и использовать --pinentry-mode cancel (или error , в зависимости от ваших требований) в качестве аргумента для GnuPG. Это возвратит цикл, требуя парольную фразу вместо GnuPG, к некоторой реализации интерфейса внешнего интерфейса, а затем вернет ошибку gpg-agent имитирующему нажатие кнопки отмены.

0

Обходной путь : вообще не используйте gpg-agent, вместо этого используйте --passphrase-file :

killall gpg-agent
gpg2 -q --batch --no-tty --passphrase-file=/tmp/passphrase --decrypt file.gpg

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .