Храните учетные данные GnuPG в кэше в течение всего сеанса пользователя


52

GnuPG может gpg-agentкэшировать доступ к закрытому ключу. Как сохранить этот кэш активным на протяжении всего сеанса пользователя ?

Когда я разблокирую ключ gpg-agent, он будет храниться в кэше только в течение ограниченного времени. С агентом SSH я ввожу фразу-пароль один раз, и она остается в кэше в течение всего сеанса. Я хочу того же поведения от gpg-agent.

Таким образом, ssh-agentне страдает от ограниченного срока службы кэша. Но gpg-agentограничивает время жизни кэша, по крайней мере, по умолчанию. Как можно устранить ограничение на время кэша от gpg-agent?

Ответы:


66

До GnuPG 2

Пользовательская конфигурация (in ~/.gnupg/gpg-agent.conf) может определять только максимальную длительность кэширования по умолчанию; это не может быть отключено.

default-cache-ttlОпция устанавливает тайм - аут (в секундах) , после последней активности GnuPG (так он сбрасывает , если вы используете его), то maximum-cache-ttlпараметр установлен отрезок времени (в секундах) , он кэширует после ввода пароля. Значение по умолчанию составляет 600 секунд (10 минут) для default-cache-ttlи 7200 секунд (2 часа) для maximum-cache-ttl.

Установите год или около того - скажем, 34560000 секунд (400 дней) - и все будет в порядке:

default-cache-ttl 34560000
maximum-cache-ttl 34560000

Но чтобы это изменение вступило в силу, вам нужно завершить сеанс, перезапустив gpg-agent.

Если вы хотите ограничить продолжительность сеанса, вам нужно убить демона при выходе из системы. Это сильно отличается между операционными системами, поэтому я имею в виду другой вопрос / ответ, содержащий советы для разных систем .

Вы также можете перезапустить во gpg-agentвремя входа в систему, но это не ограничивает время кеширования продолжительностью сеанса, но регистрирует пользователя. Решите сами, если это проблема в вашем случае.

GnuPG 2.1 и выше

В GnuPG 2.1 и выше maximum-cache-ttlопция была переименована max-cache-ttlбез дальнейших изменений.


Это ответ «ты не можешь делать то, что просишь»? Это не ясно, поскольку вы говорите об ограничении продолжительности сеанса или ограничении времени кэширования. Я хочу с точностью до наоборот: нет произвольного ограничения времени кеширования или продолжительности сеанса.
bignose

Вроде того, вы можете только обойти это, установив довольно большой TTL. Установите его на год или около того, и у вас все будет хорошо - но нужно завершить сессию, перезапустив gpg-agent.
Йенс Эрат

Обратите внимание, что в последних версиях (по крайней мере, gnupg 2.1) эта maximum-cache-ttlопция не существует. Чтобы увидеть правильные варианты, смотрите официальную документацию: gnupg.org/documentation/manuals/gnupg/…
Пабло Олмос де Агилера С.

3
По крайней мере в GnuPG 2.1 значение по умолчанию default-cache-ttlсоставляет 600 секунд (10 минут), а не два часа.
17

@jlh Глядя на справочные страницы для разных версий gpg-agent, правильное значение составляет 10 минут для всех версий. Я отредактировал ответ, спасибо за указание на это.
Йенс Эрат

5

Для Windows

Файл, который нужно отредактировать, должен быть размещен по адресу: $env:AppData\gnupg

Если вы запустите это в окне PowerShell, оно откроется: C:\Users\<UserName>\AppData\Roaming\gnupg

Просто поместите gpg-agent.confтуда файл с любыми значениями, которые вам нравятся.

Вы можете проверить это, запустив:

  1. gpgconf.exe --reload gpg-agent
  2. gpgconf.exe --list-options gpg-agent

Вы также можете использовать этот вкладыш: Set-Content -Path $env:AppData\gnupg\gpg-agent.conf -Value "default-cache-ttl 86400$([System.Environment]::NewLine)max-cache-ttl 86400"


Если второй ответ здесь неуместен, мы можем перенести его на собственный вопрос, помеченный Windows. Не уверен, что правильно :)
CubanX

Спасибо и держите это здесь - хорошо иметь всю информацию в одном месте. Bar
Барфуин

5

Обязательно перезагрузите ваш агент gpg gpg-connect-agent reloadagent /byeпосле изменения конфигурации.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.