Я вирішив переглянути це ще раз і дізнався, як це працює. GPG використовує термінологічний "кеш" для зберігання паролів. На максимальний час зберігання можуть бути обмежені два обмеження:
- Час зберегти парольну фразу, оскільки ключ був спочатку доданий.
- Час зберігати парольну фразу з моменту її останнього доступу.
Крім того, існують дві варіанти для обох обмежень, одна для ключів GPG та одна для ключів SSH (якщо підтримка була включена).
Відповідні записи на сторінці вручну gpg-agent(1)
:
--default-cache-ttl n
Set the time a cache entry is valid to n seconds. The default
is 600 seconds.
--default-cache-ttl-ssh n
Set the time a cache entry used for SSH keys is valid to n sec‐
onds. The default is 1800 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).
--max-cache-ttl-ssh n
Set the maximum time a cache entry used for SSH keys 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).
Паролі фразу завжди кешовані (у пам'яті, а не на диску! Підтверджено git repo $HOME
), тому явної потреби в цьому немає ssh-add
. Наприклад, підписання фіктивних даних запускає кеш-пам'ять:
$ echo | gpg -s >/dev/null
(passphrase requested
$ echo | gpg -s >/dev/null
(signing proceeds without asking for passphrase)
Щоб внести постійні зміни до налаштувань кешу gpg-агента, відредагуйте ~ / .gnupg / gpg-agent.conf` та додайте щось на зразок:
default-cache-ttl 60 # Expire GPG keys when unused for 1 minute
max-cache-ttl 600 # Expire GPG keys after 10 minutes since addition
Я намагався ввімкнути підтримку агента SSH, вказавши enable-ssh-support
, але це змушує gpg-агент запитати вас про інший ключ для шифрування ключа, а потім зберігає ваш приватний ключ у ~/.gnupg/private-keys.d/
. Не піди на мене, тоді я буду дотримуватися подвійного підходу ssh-agent / gpg-agent.
Деякі поради щодо бонусу:
- Еквівалент агента SSH
max-cache-ttl-ssh
може бути вказаний при додаванні ключа, наприклад:ssh-add -t 600 ~/.ssh/id_rsa
Щоб запобігти збереженню парольного фразу GPG в агенті, відключіть його. У нових версіях GPG параметр --no-use-agent
ігнорується, але ви можете запобігти використанню агента, очистивши пов'язану змінну середовища. Деякі способи зробити це:
echo | GPG_AGENT_INFO= gpg -s # temporary
export GPG_AGENT_INFO=; echo | gpg -s # until the current shell is closed
gpg-connect-agent
?