Buna tekrar bakmaya karar verdim ve nasıl çalıştığını öğrendim. GPG, şifreleri saklamak için "önbellek" terminolojisini kullanır. Maksimum saklama süresinde iki kısıtlama uygulanabilir:
- Anahtar başlangıçta eklendiğinden beri parolayı saklama süresi.
- Son erişildiğinden beri bir parolayı saklama süresi.
Ayrıca, biri GPG anahtarları, diğeri SSH anahtarları için (destek etkinleştirildiyse) her iki kısıtlama için iki varyasyon vardır.
İlgili manuel sayfa girişleri 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).
Parolalar her zaman önbelleğe alınır (bellekte değil, diskte değil! Git deposu ile doğrulanır $HOME
), bu yüzden açık bir ihtiyaç yoktur ssh-add
. Örneğin, sahte verilerin imzalanması önbelleği zaten tetikler:
$ echo | gpg -s >/dev/null
(passphrase requested
$ echo | gpg -s >/dev/null
(signing proceeds without asking for passphrase)
Gpg-agent'ın önbellek ayarlarında kalıcı değişiklikler yapmak için ~ / .gnupg / gpg-agent.conf` dosyasını düzenleyin ve şöyle bir şey ekleyin:
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 aracı desteğini belirterek etkinleştirmeye çalıştım enable-ssh-support
, ancak bu gpg aracısının anahtarı şifrelemek için başka bir anahtar istemesini sağlar ve sonra özel anahtarınızı saklar ~/.gnupg/private-keys.d/
. Benim için hayır, o zaman ikili bir ssh-agent / gpg-agent yaklaşımına bağlı kalacağım.
Bazı bonus ipuçları:
max-cache-ttl-ssh
Anahtar eklenirken SSH aracısının eşdeğeri belirtilebilir, örneğin:ssh-add -t 600 ~/.ssh/id_rsa
GPG parolasını aracıda depolamayı önlemek için aracıyı devre dışı bırakın. Daha yeni GPG sürümlerinde seçenek --no-use-agent
yok sayılır, ancak ilgili ortam değişkenini temizleyerek aracının kullanılmasını önleyebilirsiniz. Bunu yapmanın bazı yolları:
echo | GPG_AGENT_INFO= gpg -s # temporary
export GPG_AGENT_INFO=; echo | gpg -s # until the current shell is closed
gpg-connect-agent
mi