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


21

私は開発者であり、一般的に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 <r@rdegges.com>"
    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

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

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

回答:


24

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

最後に、2つの可能性があります。

  • gpg2git設定を変更して、使用するgitをセットアップします。

    git config --global gpg.program gpg2
    
  • に追加しgpgて使用するようにセットアップ(GnuPG 1)gpg-agentuse-agentgpg.conf

0

上記の回答に加えて、あなたはまた、単にデフォルト変更することができますgpgし、あなたのシステム内にgpg2ではなくgpg1

場合はgit config --global gpg.program gpg2あなたのための作品は、しかし、あなたは(私はMacOSの上で同じ設定を使用するため、私の場合には)あなたのgit configにそれを残したくない、あなたはデフォルトを入れ替えるだけでできgpgて。

私はここのガイドに従いました。

$ 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の現在の安定バージョン)gpg2gpg同様の方法でデフォルトとして設定されるため、あまり多くの問題はないはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.