Залишайте кешування облікових даних GnuPG протягом усього сеансу користувача


53

GnuPG може gpg-agentкешувати доступ до приватного ключа. Як я можу підтримувати кеш-пам'ять активним протягом усього сеансу користувача ?

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

Таким чином, ssh-agentне страждає обмежений термін експлуатації кешу. Але gpg-agentобмежує термін служби кешу, принаймні, за замовчуванням. Як можна усунути обмеження на час кешу від gpg-agent?

Відповіді:


69

До GnuPG 2

Конфігурація користувача (в ~/.gnupg/gpg-agent.conf) може визначати лише стандартну та максимальну тривалість кешування; його не можна відключити.

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

Встановіть це на рік або близько того - скажімо, 34560000 секунд (400 днів) - і вам буде добре:

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

Але, щоб ця зміна набула чинності, потрібно закінчити сеанс перезапуском gpg-агента.

Якщо ви хочете обмежити тривалість сеансу, вам потрібно буде вбити демона при виході. Це дуже відрізняється між операційними системами, тому я маю на увазі ще одне питання / відповідь, що містить підказки для різних систем .

Ви також можете перезапустити 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/…
Пабло Олмос де Агілера C.

3
Принаймні, у GnuPG 2.1 за замовчуванням default-cache-ttl600 секунд (10 хвилин), а не дві години.
jlh

@jlh Переглядаючи сторінки чоловіка для різних версій gpg-agent, здається, що правильне значення становить 10 хвилин для всіх версій. Я відредагував відповідь, дякую, що ви вказали на це.
Йенс Ерат

7

Для 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

Дякуємо та зберігайте його тут - добре мати всю інформацію в одному місці. 👍
barfuin

5

Переконайтесь, що ви перезавантажте gpg-агент gpg-connect-agent reloadagent /byeпісля зміни конфігурації.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.