我知道使用pinentry-curses
emacs 会遇到问题(请参阅一些评论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 loopback
2021 年,您可以在~/.gnupg/gpg.conf
设置 gpg-agent 并使用allow-loopback-entry
in后使用设置~/.gnupg/gpg-agent.conf