Postanowiłem to rzucić okiem ponownie i dowiedziałem się, jak to działa. GPG używa terminologii „cache” do przechowywania haseł. Na maksymalny czas przechowywania można nałożyć dwa ograniczenia:
- Czas przechowywania hasła od momentu dodania klucza.
- Czas zachować hasło od ostatniego dostępu.
Ponadto istnieją dwie odmiany dla obu ograniczeń, jedna dla kluczy GPG i jedna dla kluczy SSH (jeśli obsługa była włączona).
Odpowiednie wpisy strony podręcznika z 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).
Hasła są zawsze buforowane (w pamięci, a nie na dysku! Zweryfikowane za pomocą repozytorium git $HOME
), więc nie ma wyraźnej potrzeby ssh-add
. Na przykład podpisywanie danych fikcyjnych już wyzwala pamięć podręczną:
$ echo | gpg -s >/dev/null
(passphrase requested
$ echo | gpg -s >/dev/null
(signing proceeds without asking for passphrase)
Aby wprowadzić trwałe zmiany w ustawieniach pamięci podręcznej gpg-agent, edytuj ~ / .gnupg / gpg-agent.conf` i dodaj coś takiego:
default-cache-ttl 60 # Expire GPG keys when unused for 1 minute
max-cache-ttl 600 # Expire GPG keys after 10 minutes since addition
Próbowałem włączyć obsługę agenta SSH przez określenie enable-ssh-support
, ale powoduje to, że gpg-agent prosi o inny klucz do zaszyfrowania klucza, a następnie przechowuje Twój klucz prywatny ~/.gnupg/private-keys.d/
. Nie idź dla mnie, będę więc trzymał się podwójnego podejścia ssh-agent / gpg-agent.
Kilka porad bonusowych:
max-cache-ttl-ssh
Podczas dodawania klucza można określić ekwiwalent agenta SSH , na przykład:ssh-add -t 600 ~/.ssh/id_rsa
Aby zapobiec przechowywaniu hasła GPG w agencie, wyłącz agenta. W nowszych wersjach GPG opcja --no-use-agent
jest ignorowana, ale można zapobiec użyciu agenta, usuwając powiązaną zmienną środowiskową. Niektóre sposoby:
echo | GPG_AGENT_INFO= gpg -s # temporary
export GPG_AGENT_INFO=; echo | gpg -s # until the current shell is closed
gpg-connect-agent
?