私はこれをもう一度見てみることにし、それがどのように機能するかを見つけました。GPGは、パスワードの保存に「キャッシュ」という用語を使用します。最大保管時間には2つの制約を課すことができます。
- キーが最初に追加されてからパスフレーズを保持する時間。
- パスフレーズが最後にアクセスされてから保持する時間。
また、GPGキー用とSSHキー用の2つのバリエーションが両方の制約に存在します(サポートが有効になっている場合)。
関連するマニュアルページエントリ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リポジトリで検証されます$HOME
)ので、明示的な必要はありませんssh-add
。たとえば、ダミーデータに署名すると、すでにキャッシュがトリガーされます。
$ echo | gpg -s >/dev/null
(passphrase requested
$ echo | gpg -s >/dev/null
(signing proceeds without asking for passphrase)
gpg-agentのキャッシュ設定を永続的に変更するには、〜/ .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-agentがキーを暗号化するために別のキーを要求し、プライベートキーをに保存します~/.gnupg/private-keys.d/
。私には行きません、それからデュアルssh-agent / gpg-agentアプローチに固執します。
ボーナスのヒント:
max-cache-ttl-ssh
キーを追加するときに、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
か?