GnuPGは、gpg-agent
を使用して、秘密鍵へのアクセスをキャッシュできます。どうすればユーザーセッション全体でキャッシュをアクティブに保つ?
gpg-agent
のキーのロックを解除すると、限られた時間だけキャッシュされたままになります。 SSHのエージェントを使用して、パスフレーズを1回入力すると、セッション全体でパスフレーズがキャッシュされたままになります。 gpg-agent
の同じ動作が必要です。
したがって、ssh-agent
は、限られたキャッシュの寿命の影響を受けません。ただし、gpg-agent
は、少なくともデフォルトでは、キャッシュの寿命を制限します。どうすればキャッシュ時間の制限をなくすをgpg-agent
からできますか?
ユーザー構成(~/.gnupg/gpg-agent.conf
内)は、デフォルトおよび最大のキャッシュ期間のみを定義できます。無効にすることはできません。
default-cache-ttl
オプションは、最後のGnuPGアクティビティ(使用するとリセットされる)からのタイムアウト(秒単位)を設定し、maximum-cache-ttl
オプションは、パスワードの入力後にキャッシュする期間(秒単位)を設定します。デフォルト値は、default-cache-ttl
の場合は600秒(10分)、maximum-cache-ttl
の場合は7200秒(2時間)です。
1年程度、たとえば34560000秒(400日)に設定すれば、問題ありません。
default-cache-ttl 34560000
maximum-cache-ttl 34560000
ただし、この変更を有効にするには、gpg-agentを再起動してセッションを終了する必要があります。
セッションの長さを制限したい場合は、ログアウト時にデーモンを強制終了する必要があります。これはオペレーティングシステム間で大きく異なるため、ここでは 異なるシステムのヒント を含む別の質問/回答を参照します。
ログイン中にgpg-agent
を再起動することもできますが、これはキャッシュ時間をセッションの長さに制限するのではなく、ユーザーのログインに制限します。これがあなたのケースで問題であるかどうかを判断してください。
GnuPG 2.1以降では、maximum-cache-ttl
オプションの名前がmax-cache-ttl
に変更され、それ以上の変更はありません。
設定を変更した後は、必ずgpg-connect-agent reloadagent /bye
を使用してgpgエージェントをリロードしてください。
編集する必要があるファイルは次の場所に配置する必要があります:_$env:AppData\gnupg
_
PowerShellウィンドウで実行すると、次のように開きます:_C:\Users\<UserName>\AppData\Roaming\gnupg
_
_gpg-agent.conf
_ファイルを好きな値でそこに置くだけです。
次のコマンドを実行して、かかったことを確認できます。
gpgconf.exe --reload gpg-agent
_gpgconf.exe --list-options gpg-agent
_この1つのライナーを使用することもできます:Set-Content -Path $env:AppData\gnupg\gpg-agent.conf -Value "default-cache-ttl 86400$([System.Environment]::NewLine)max-cache-ttl 86400"