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

Как предотвратить истечение времени ожидания 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

Есть ли способ полностью отключить этот тайм-аут?

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

решение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

Связанный контент