小编Rnh*_*joj的帖子

如何让 pinentry-curses 从正确的 tty 开始?

gpg-agent用于管理 PGP e SSH 身份。代理以这样的脚本启动

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
Run Code Online (Sandbox Code Playgroud)

每当我运行交互式 shell 时,它就会被获取。使用此设置一切正常,但存在问题。假设我:

  1. 打开终端(在后台启动代理)并开始工作
  2. 一段时间后打开第二个终端
  3. 执行需要在第二个终端中输入密码的操作

此时gpg-agent将开始pinentry-curses提示密码,但它会在第一个终端中执行此操作,导致其输出与正在运行的任何内容(通常是文本编辑器)混合,无法恢复程序或停止输入(它开始使用 100% cpu我必须杀死它)。

我一定在这里做错了什么。任何人都经历过这种情况?

更新:

我发现这种情况只发生在提示解锁 SSH 密钥时,看起来像这样,而 PGP 密钥的提示总是在正确的(即当前的)tty 上打开。

tty gpg pinentry

15
推荐指数
2
解决办法
1万
查看次数

标签 统计

gpg ×1

pinentry ×1

tty ×1