Я обращаюсь к 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
Есть ли способ полностью отключить этот тайм-аут?
Я бы хотел, чтобы запрос на ввод парольной фразы оставался на экране до тех пор, пока я что-нибудь не введу.
решение1
Решение найдено здесь:https://dev.gnupg.org/T3240
Задержка вызвана тем, что pinentry запрашивает связку ключей GNOME. Добавьте no-allow-external-cache
в свойgpg-agent.conf, или удалите gnome-keyring
и завершите работу gpg-agent:gpgconf --kill gpg-agent
решение2
В gpg-agent.conf (см.gpg-агент(1)), попробуйте следующие варианты:
pinentry-timeout 0
pinentry-program /usr/bin/pinentry-curses --timeout 0
(Хотя вам может показаться, pinentry-tty
что так будет удобнее.)
решение3
В: "Как предотвратить истечение времени ожидания gpg-agent во время сбора парольной фразы?"
A: Конкретный случай — это использование gpg
в ssh
сеансе. Конфигурация ниже позволяетgpg-агенттакже в течение ssh
сессии. В частности
- нет захватапозволяет вырезать и вставлять
- нет-разрешения-внешнего-кэшаотключает любые связки ключей
- pinentry-проклятиязапрашивает пароль в терминале вместо пароля по умолчаниюпиночникспрашивая в окне удаленного (в случае ssh) рабочего стола.
- Время житьттл(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
решение4
Мне (gpg 2.1.11) помогло просто задать для pinentry-timeout
параметра большое значение (например, 24 часа), добавив в файл следующее ~/.gnupg/gpg-agent.conf
:
# time until pinentry closes in seconds
pinentry-timeout 86400