web-dev-qa-db-ja.com

ユーザーセッション全体でGnuPG資格情報をキャッシュしておく

GnuPGは、gpg-agentを使用して、秘密鍵へのアクセスをキャッシュできます。どうすればユーザーセッション全体でキャッシュをアクティブに保つ

gpg-agentのキーのロックを解除すると、限られた時間だけキャッシュされたままになります。 SSHのエージェントを使用して、パスフレーズを1回入力すると、セッション全体でパスフレーズがキャッシュされたままになります。 gpg-agentの同じ動作が必要です。

したがって、ssh-agentは、限られたキャッシュの寿命の影響を受けません。ただし、gpg-agentは、少なくともデフォルトでは、キャッシュの寿命を制限します。どうすればキャッシュ時間の制限をなくすgpg-agentからできますか?

58
bignose

GnuPG 2まで

ユーザー構成(~/.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以降

GnuPG 2.1以降では、maximum-cache-ttlオプションの名前がmax-cache-ttlに変更され、それ以上の変更はありません。

80
Jens Erat

設定を変更した後は、必ずgpg-connect-agent reloadagent /byeを使用してgpgエージェントをリロードしてください。

7
SuperSandro2000

Windowsの場合

編集する必要があるファイルは次の場所に配置する必要があります:_$env:AppData\gnupg_

PowerShellウィンドウで実行すると、次のように開きます:_C:\Users\<UserName>\AppData\Roaming\gnupg_

_gpg-agent.conf_ファイルを好きな値でそこに置くだけです。

次のコマンドを実行して、かかったことを確認できます。

  1. _gpgconf.exe --reload gpg-agent_
  2. _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"

7
CubanX