emacs 可以在终端中使用 gpg-agent 吗?

emacs 可以在终端中使用 gpg-agent 吗?

我知道使用pinentry-cursesemacs 会遇到问题(请参阅一些评论http://emacswiki.org/emacs/EasyPG),因此在终端中使用 emacs 与 gpg-agent 不兼容。

在这种情况下,我无法使用图形 pinentry 工具,因为这是通过 ssh 连接到远程计算机的。

但是,是否可以预先向 gpg-agent 提供密码,然后让 emacs 使用它,但如果代理还没有此信息,则不提示输入密码?

什么设置允许它与notmuch.el和一起使用EasyPG

或者,是否有替代的缓存密码短语的方法可以达到相同的效果,但可能存在安全问题(这就是 gpg-agent 存在的首要原因)?

答案1

这! ->https://github.com/ecraven/pinentry-emacs

你必须做一些扭力,但使用这个东西对我有用。将脚本放入您的目录中PATH,然后将以下条目添加到~/.gnupg/gpg-agent.conf

pinentry-program <path-to-pinentry-emacs>/pinentry-emacs

然后重新加载代理:

$ echo RELOADAGENT | gpg-connect-agent

对我来说就像一个梦想:)

答案2

如果您有一个相当新的 pinentry/gpg2(分别在 Arch Linux 上使用 0.9.7 和 2.1.11 进行测试),另一种选择是使用http://elpa.gnu.org/packages/pinentry.html

pinentry从安装M-x list-packages,然后放置

allow-emacs-pinentry

在你的.gnupg/gpg-agent.conf并把

(setenv "INSIDE_EMACS" (format "%s,comint" emacs-version))
(pinentry-start)

在你的.emacs.d/init.el。我必须将 setenv 放在那里,因为虽然 INSIDE_EMACS 在运行时设置M-x shell,但在简单打开文件时并未设置.gpg

现在 gpg-agent 在终端和 Emacs 中使用常规的curses版本read-passwd(它隐藏了提示符和 中的字符view-lossage)。


编辑: Debian 软件包似乎有一个补丁来删除 Emacs 支持,因此目前此解决方案仅适用于其他发行版/准备自己编译 pinentry 的人。

答案3

pinentry-mode loopback2021 年,您可以在~/.gnupg/gpg.conf设置 gpg-agent 并使用allow-loopback-entryin后使用设置~/.gnupg/gpg-agent.conf

相关内容