gpg2
ローカル ファイルの対称暗号化のために CLI スクリプトでを呼び出しています。CLIgpg-agent
のテキスト ベースの UI を介してパスフレーズの入力を求めるプロンプトが表示されるようです。パスフレーズを入力できる状態であれば、すべて正常に動作します。ただし、そうでない場合は、最終的に次のメッセージが表示されて失敗します。
gpg-agent[15338]: command get_passphrase failed: Operation cancelled
gpg: cancelled by user
gpg: error creating passphrase: Operation cancelled
gpg: symmetric encryption of `XXXX.tar' failed: Operation cancelled
このタイムアウトを完全にオフにする方法はありますか?
何かを入力するまで、パスフレーズプロンプトが画面に無期限に表示されるようにしたいです。
答え1
解決策はここに見つかりました:https://dev.gnupg.org/T3240
no-allow-external-cache
この遅延は、pinentryがGNOMEキーリングを照会することによって発生します。gpg-agent.conf、または を削除しgnome-keyring
、現在実行中の gpg-agent を強制終了します。gpgconf --kill gpg-agent
答え2
gpg-agent.conf(参照)gpgエージェント(1)) の場合は、次のオプションを試してください。
pinentry-timeout 0
pinentry-program /usr/bin/pinentry-curses --timeout 0
(ただし、使用する方が多少は良いかもしれませんpinentry-tty
。)
答え3
質問:パスフレーズ収集中に gpg-agent がタイムアウトするのを防ぐにはどうすればよいですか?
gpg
A: 具体的なケースとしては、セッションでの使用が挙げられますssh
。以下の設定により、gpgエージェントセッション内でもssh
。特に
- つかまないカット&ペーストが可能
- 外部キャッシュを許可しないキーリングを無効にする
- ピンエントリーの呪いデフォルトではなくターミナルでパスワードを要求しますピンエントリーリモート (ssh の場合) デスクトップ ウィンドウで質問します。
- 生きる時間ttl(5,6) は 24 時間に設定されています。これにより、たとえば gpg-agent でスクリプトを呼び出す cron を毎日実行するときに、パスワードを再入力する必要がなくなります。
shell> cat ~/.gnupg/gpg-agent.conf
no-grab
no-allow-external-cache
pinentry-program /usr/bin/pinentry-curses
default-cache-ttl 86400
max-cache-ttl 86400
答え4
私の場合 (gpg 2.1.11)、pinentry-timeout
次のコードをファイルに追加して、オプションを大きな値 (24 時間など) に設定するだけでうまくいきました~/.gnupg/gpg-agent.conf
。
# time until pinentry closes in seconds
pinentry-timeout 86400