无法使用emacs解密.gpg文件,但命令行gpg有效


12

我有一个accounts.org.gpg文件。我可以直接使用gpg打开它:

$ gpg -d ./accounts.org.gpg 

You need a passphrase to unlock the secret key for
user: "Omair Majid <removed@removed>"
4096-bit RSA key, ID 7CC8AAC6, created 2012-01-18 (main key ID 66484681)

gpg: encrypted with 4096-bit RSA key, ID 7CC8AAC6, created 2012-01-18
    "Omair Majid <removed@removed>"
+TITLE: Accounts
<rest of output removed>

但是我无法使用Emacs打开相同的文件。尝试在emacs中打开它给我一个错误:

epa-file--find-file-not-found-function: Opening input file: Decryption failed, No secret key: E295ECEC7CC8AAC6

我需要在emacs端进行配置以使其工作吗?

为了提供一些其他背景知识,我在另一台计算机上(使用相同版本的Emacs)创建了该文件,Emacs可以在该计算机上对该文件进行读/写操作。然后,我将over的内容复制~/.gnupg 到了这台机器上。现在gpg仍然可以读取它,但是Emacs无法读取。

编辑:这可能是gpg1 vs gpg2的区别吗?

$ gpg2 --decrypt accounts.org.gpg 
gpg: encrypted with RSA key, ID E295ECEC7CC8AAC6
gpg: decryption failed: No secret key

如何从另一台机器(使用相同的配置,相同的Emacs(25.1)版本和相同的操作系统(Fedora 24 x86_64,相同版本的gpg和gpg2软件包))上读取和写入该Emacs。无论如何,

(setq epg-gpg-program "/usr/bin/gpg")

仍然会导致相同的错误。


你试过了(setq epg-gpg-program "gpg2")吗?
caisah

是的 这也是默认值。而且它不起作用。就像gpg2命令行程序没有那样。我开始认为这是gpg2本身的问题,而不是emacs。
Omair Majid

3
@caisah参见Bug#24229setq不适用于epg-gpg-program,您必须对其进行自定义。
npostavs 16-10-17

Answers:


15

您没有说您拥有哪个操作系统或emacs版本。

我昨天使用此链接中的信息解决了OSX和emacs 25.1中完全相同的问题:http : //colinxy.github.io/software-installation/2016/09/24/emacs25-easypg-issue.html

我运行了以下命令:

brew unlink gnupg2 gpg-agent dirmngr
brew uninstall gnupg2 gpg-agent dirmngr
brew install gnupg21
ln -s /usr/local/bin/gpg2 /usr/local/bin/gpg

并在我的emacs conf文件中设置pinentry模式:

(setf epa-pinentry-mode 'loopback)

请查看我对OS和Emacs版本的编辑。我绝对不打算覆盖gpg / gpg2的系统版本。
Omair Majid

标准的酿造软件包gnupg已有一段时间了,版本为2.1。与之完全不兼容的旧版1.4和2.0可作为单独的软件包提供。
Heikki

只是一个信息:我在Linux上遇到了类似的问题,该解决方案也解决了我的问题。
Manoel Vilela '18年

2
感谢您指出(setf epa-pinentry-mode 'loopback)技巧。
ph

1
(setf epa-pinentry-mode 'loopback)对于我的Gnu Emacs 26.2和来自自制的gpg 2.2.16,在.emacs中添加行就足够了。
戴夫X
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.