私は開発者であり、一般的にGitコミットにGPGキーで署名します。 OSXでGPGエージェントを正常に動作させることができたため、1日に1回だけパスワードの入力を求められますが、Ubuntu 16.04でも同じことをするのに問題があります。
ここに私がやっていることがあります:
次に、それらをコミット(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
これも効果がありません。
また、さまざまなブログの方法なども試しましたが、何もうまくいかないようです。誰かが私が行方不明になっている可能性のあるものへのポインタを教えてもらえますか?
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-agent
をuse-agent
に追加してgpg.conf
を使用するようにgpg
(GnuPG 1)を設定します上記の答えに加えて、システムのデフォルトのgpg
をgpg2
ではなく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
に設定します同様の方法なので、あまり多くの問題を抱えてはいけません。