我正在尝试将加密软件整合到GnuPG,但遇到了一个令人困惑的问题。
我的主要设备是无头服务器,我专门在tmux中工作。没有X会话,因此我已经将gpg-agent配置为使用pinentry-curses。我已配置gpg-agent使用以下脚本通过ssh-agent仿真在登录时调用:
if pgrep -u "${USER}" gpg-agent >/dev/null 2>&1; then
eval `cat $gnupginf`
eval `cut -d= -f1 $gnupginf | xargs echo export`
else
eval `gpg-agent -s --enable-ssh-support --daemon`
fi
我已经将ssh密钥添加到了gpg-agent中,但是当我尝试另一个ssh会话时,命令将挂起。
我发现,如果我杀死gpg-agent并创建一个新的登录shell,则该代理将按其应有的方式工作(调用pinentry-curses然后像ssh-agent一样工作)。
但是,如果我创建另一个登录外壳(例如,通过弹出打开另一个tmux窗格)并尝试ssh,该命令将挂起,并且pinentry-curses窗口将打印在最初启动该代理的登录外壳的内容上。
此外,如果我关闭了最初启动该代理程序的外壳,则无论如何都会调用pinentry-curses并导致cpu-crippling无限循环。(已知的错误,请参见http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=559936。)
本质上,我想知道要更改我的设置以使GnuPG代理与ssh-agent一样无缝地工作。谢谢你的帮助!