web-dev-qa-db-ja.com

GPGエージェントにパスワードをキャッシュさせるにはどうすればよいですか?

私は開発者であり、一般的にGitコミットにGPGキーで署名します。 OSXでGPGエージェントを正常に動作させることができたため、1日に1回だけパスワードの入力を求められますが、Ubuntu 16.04でも同じことをするのに問題があります。

ここに私がやっていることがあります:

  • GPGキーのセットアップなどがあります。
  • 私はGitディレクトリにいます。
  • Gitにいくつかのファイルを追加します。
  • 次に、それらをコミット(git commit)して、次のようなGPGパスワードリクエストを取得します。

    $ git ci
    
    You need a passphrase to unlock the secret key for
    user: "Randall Degges <[email protected]>"
    4096-bit RSA key, ID 8F700DA2, created 2016-04-05
    
    [master 1740961] blah
     1 file changed, 1 insertion(+)
    

問題は、コミットを行うたびに、GPGパスワードを再度求められることです。

私がやりたいのは、パスワードを1日間キャッシュするようにGPGエージェントを構成することです。したがって、一度だけ入力する必要があります。

私はたくさんのドキュメントとブログ投稿を読みましたが、これまでに試したことがあります...

最初に、~/.zshrcファイルを変更し(zshを使用)、以下を設定しました。

# GPG Agent
export GPG_TTY=$(tty)
export GPGKEY=8F700DA2

今、私が読​​んだことから、これだけでgpg-agentを再起動した後にトリックを行うはずですが、そうではありません。

それで、次にしたことは、~/.gnupg/gpg-agent.confページで説明されているようにman gpg-agentファイルを定義したことです。

# Set the default cache time to 1 day.
default-cache-ttl       86400
default-cache-ttl-ssh   86400

# Set the max cache time to 30 days.
max-cache-ttl           2592000
max-cache-ttl-ssh       2592000

これも効果がありません。

また、さまざまなブログの方法なども試しましたが、何もうまくいかないようです。誰かが私が行方不明になっている可能性のあるものへのポインタを教えてもらえますか?

21
rdegges

gpg-agent.confでキャッシュ時間を設定することに加えて、GnuPGが実際にgpg-agentに接続していることも確認する必要があります。 GnuPG 2以降は一般的にありますが、GnuPG 1ブランチはありません。デフォルトでは、gitはgpgバイナリを使用していますが、これは(この回答を書いている時点では)GnuPG 1ですが、GnuPG 2はほとんどのシステムにgpg2としてインストールされます。

最後に、可能性があります:

  • gpg2を使用するようにgitを設定 git設定を変更することにより:

    git config --global gpg.program gpg2
    
  • gpg-agentuse-agentに追加してgpg.confを使用するようにgpg(GnuPG 1)を設定します
24
Jens Erat

上記の答えに加えて、システムのデフォルトのgpggpg2ではなくgpg1に変更することもできます。

git config --global gpg.program gpg2が機能するが、それをgit configに残したくない場合(私の場合、macOSで同じ構成を使用するため)、デフォルトのgpg outを交換するだけです。

ガイド here に従いました。

$ Sudo mv /usr/bin/gpg /usr/bin/gpg1
$ Sudo update-alternatives --verbose --install /usr/bin/gpg gnupg /usr/bin/gpg2 50

これにより、gpg1が古いgpgバイナリになり、シンボリックリンク/usr/bin/gpg -> /usr/bin/gpg2(名前gnupg、優先度50)になります。

デフォルトのgpgを変更すると、理論上はシステム上の一部のパッケージが破損する可能性がありますが、Debian Stretch(Debianの現在の安定バージョン) gpg2をデフォルトのgpg に設定します同様の方法なので、あまり多くの問題を抱えてはいけません。

0
gib