SSH,tmux和GnuPG代理的最佳做法


12

我正在尝试将加密软件整合到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一样无缝地工作。谢谢你的帮助!

Answers:


4

事实证明,这一过程非常简单。而不是使用该脚本的,我只是从我的旧钥匙串启动脚本,去掉了“--agents”选项(指导这里)。

这将导致钥匙串程序同时查找ssh-agent和gpg-agent文件。现在,即使依赖于两种类型的代理,我的加密系统也可以无缝运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.