Заставить gpg-agent забыть пароль

Я использую gpg-agent 2.0.17 с gpg 1.4.11 в Ubuntu 12.04 и аддон Enigmail для Thunderbird. При открытии зашифрованной электронной почты Enigmail вызывает gpg-agent со связанной программой pinentry и запрашивает пароль. Затем у меня есть возможность установить время жизни для кэшированного пароля, обычно устанавливаемого в конец сеанса.

Поскольку я редко закрываю сеанс или выход из него, я хотел бы заставить gpg-agent забыть все кэшированные пароли при блокировке сеанса. Я искал способ сделать это, и на man-странице gpg-agent говорится, что -SIGHUP сбрасывает все пароли, однако, в отличие от man-страницы, кэшированные пароли не забываются.

Есть идеи, как заставить gpg-agent забыть пароли?

4 ответа

gpgconf --reload gpg-agent это один из способов заставить агента забыть пароли, которые он кэшировал в памяти. В настоящее время (gpg 2.0-2.1) это [почти] эквивалентно pkill -HUP gpg-agent, Я говорю "почти эквивалентно", поскольку теоретически у вас может быть запущено несколько агентов, и pkill попытается доставить SIGHUP им всем.

Я использую простое:

echo RELOADAGENT | gpg-connect-agent

Работа как шарм.

TTL для паролей кеша контролируется gpg-agent Варианты:

--default-cache-ttl n
  Set the time a cache entry is valid to n seconds.  The default is 600 seconds.

--max-cache-ttl n
  Set  the  maximum time a cache entry is valid to n seconds.  After
  this time a cache entry will be expired even if it has been accessed
  recently.  The default is 2 hours (7200 seconds).

Согласно способу управления этим по требованию, если вы можете вызвать команду при блокировке экрана, используя цепочку для ключей для обработки gpg-agent может быть использован для выполнения

keychain --clear --agents gpg

который убил бы все управляемые экземпляры gpg-agent. Но тогда у вас должен быть способ выполнить keychain --agents gpg --eval $gpg после разблокировки экрана. Может быть, слишком много хлопот.

Ни один из других ответов не сработает для меня в GnuPG 2.2.19 (Solus 4.1, Nitrokey Smart, токен gnuk для хранения). Я удостоверился только в одном gpg-agent работает, и при необходимости он будет отвечать OK.
В итоге я сделал следующее:

killall gpg-agent

Вы всегда должны проверять, действительно ли вышеперечисленное привело к тому, что пароли были забыты, расшифровав некоторый зашифрованный файл (gpg -d < somefile.gpg)

gpg-connect-agent reloadagent /bye

Вот что помогло мне очистить один пароль (т.е. пароль) - запустить с терминала - если вы хотите очистить их все, тогда /questions/247335/zastavit-gpg-agent-zabyit-parol/247344#247344 работает:

gpg-connect-agent "clear_passphrase --mode=normal <cacheid>" /bye

где <cacheid> скорее всего, доступна клавиатура, если вы выполните:gpg --list-keys --with-keygrip:

<path to pubring.kbx>
------------------------------------------------
pub   rsa2048 2017-12-11 [SC] [expires: 2019-12-11]
    <keyid>
    Keygrip = <keygrip>
uid          `<email>

С небольшой помощью https://web.archive.org/web/20180528210236/https://demu.red/blog/2016/06/how-to-check-if-your-gpg-key-is-in-cache/

Другие вопросы по тегам