正しいttyでpinentry-cursesを起動するにはどうすればよいですか?

正しいttyでpinentry-cursesを起動するにはどうすればよいですか?

PGPを使用してgpg-agentSSH IDを管理します。エージェントは次のスクリプトで起動します。

gpg_agent_env="$XDG_CACHE_HOME/gpg-agent.env"

export GPG_TTY="$(tty)"

if ! ps -U "$USER" -o ucomm | grep -q gpg-agent; then
    eval "$({gpg-agent --daemon | tee $gpg_agent_env} 2> /dev/null)"
else
    source "$gpg_agent_env" 2> /dev/null
fi

対話型シェルを実行するたびにそれを取得します。この設定ではすべてがうまく機能しますが、問題があります。私は:

  1. ターミナルを開き(バックグラウンドでエージェントを起動)、タスクを開始
  2. しばらくして2番目の端末を開きます。
  3. 2番目の端末でパスワードが必要な操作を実行する

この時点でパスワードの入力を求められgpg-agent始めますpinentry-cursesが、最初の端末でパスワードの入力を求められます。これにより、出力が実行されているすべての項目(通常はテキストエディタ)と混在し、プログラムを再起動または停止できなくなります。 pinentry(100%CPUを使用して起動します)を終了する必要があります。

私がここで何か間違っているのは間違いありません。誰でもこれを経験しましたか?

修正する:

SSHキーのロックを解除するように求められたときにのみこれが発生することがわかりました。これ、PGPキーのプロンプトは常に正しい(つまり現在の)ttyで開きます。

ベストアンサー1

これgpg-agent のマニュアルページ--enable-ssh-supportこのオプションでは、SSHエージェントプロトコルがtty名をエージェントに提供できないため、デフォルト値が開始された元の端末として指定されるという説明があります。新しい端末でパスワードが必要なSSHコマンドを発行する前に、次のように入力する必要があります。

gpg-connect-agent updatestartuptty /bye

新しい端末で使用されるttyまたはモニターのエージェントビューを更新します。

おすすめ記事