Как предотвратить отключение gpg-agent во время сбора парольной фразы?

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

gpg-agent[15338]: command get_passphrase failed: Operation cancelled
gpg: cancelled by user
gpg: error creating passphrase: Operation cancelled
gpg: symmetric encryption of `XXXX.tar' failed: Operation cancelled

Есть ли способ полностью отключить это время?

Я бы хотел, чтобы приглашение с парольной фразой оставалось на экране до тех пор, пока я не введу что-либо.

2 ответа

Решение основано здесь: https://dev.gnupg.org/T3240

Задержка вызвана запросом pinentry к кольцу ключей GNOME. Добавлять no-allow-external-cache на ваш gpg-agent.conf или удалите gnome-keyringи убить запущенный в данный момент gpg-agent: gpgconf --kill gpg-agent

В: " Как предотвратить истечение времени ожидания gpg-agent во время сбора парольной фразы?"

A: Конкретный случай - использование gpg в sshсеанс. Приведенная ниже конфигурация включает gpg-agent также в сеансе ssh. В частности, no-grab позволяет вырезать и вставлять, no-allow-external-cache отключает любые связки ключей, а pinentry-curses запрашивает пароль в терминале вместо запроса pinentry по умолчанию в окне удаленного (в случае ssh) рабочего стола. Время жизни ttl (5,6) установлено на 24 часа. Таким образом, нет необходимости повторно вводить пароль, когда, например, cron, который запускает скрипт с gpg-agent, запускается ежедневно.

       shell> cat ~/.gnupg/gpg-agent.conf
no-grab 
no-allow-external-cache 
pinentry-program /usr/bin/pinentry-curses
default-cache-ttl 86400
max-cache-ttl 86400

В gpg-agent.conf (см. Gpg-agent (1)) попробуйте следующие варианты:

pinentry-timeout 0
pinentry-program /usr/bin/pinentry-curses --timeout 0

(Вы можете найти pinentry-tty несколько приятнее в использовании.)

То, что работало для меня (gpg 2.1.11), было просто установить pinentry-timeout вариант к большому значению (например, 24 часа), добавив следующее в мой ~/.gnupg/gpg-agent.conf файл:

# time until pinentry closes in seconds
pinentry-timeout 86400
Другие вопросы по тегам