gpg-agentを使用してもgpgがまだパスワードを要求するのはなぜですか?

gpg-agentを使用してもgpgがまだパスワードを要求するのはなぜですか?

次のようにgpg-agentを起動します。

eval `gpg-agent --daemon --preset`

そして、このターミナルウィンドウで推奨されているようにgpg-preset-passphraseコマンドを使用してください。

echo secretpassword | /usr/libexec/gpg-preset-passphrase --preset KEYGRIPID

それから私はこの回答パスワードが実際に正しくキャッシュされていることを確認してください。

echo 'GET_PASSPHRASE --no-ask KEYGRIPID Err Pmt Des'|gpg-connect-agent |
  perl -pe 's/([0-9a-fA-F]{2})/chr(hex $1)/eg'

今gpgを実行して何かに署名または暗号化すると、パスワードの入力を求められます。このようなことは起こってはいけません。

gpg -u KEYGRIPID --clearsign --batch somefile.txt

<curses-based prompt>

パスワードを正しく入力してgpg-signコマンドを再実行すると、プロンプトは表示されません。これは異なりますが、パスワードがキャッシュされていることを示します。

GPG バージョン 2.0.14

ベストアンサー1

これはない鍵盤しかし、指紋キー。これは参考資料です。目的の値を抽出するのに役立つ醜いPerlスクリプトは次のとおりです。

gpg -K --fingerprint | 
perl -lne '$/="\n\n"' \
 -e if ( ($len,$grip,$fp)=/^sec\s+(\w+)\/([0-9A-Z]+).* fingerprint = (.*?)\s+uid\s/ms)' \
 -e { $fp =~ s/\s*//g; print "$grip $fp";}'

出力:

EF2141BE 24C5202D6905CB0A5C94AB36134E3618EF6141B8
1BA3D65B 484EE4F3DC2595FAF91F51A9731342954BAFD753

2番目の列をコピーしてプリセットコマンドに渡します。

echo secretpassword | /usr/libexec/gpg-preset-passphrase --preset 

おすすめ記事