Как предотвратить отключение 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