我正在使用 duplicity(通过 duplicity-backup.shhttps://github.com/zertrin/duplicity-backup.sh- 不再处于开发或支持状态,但它是 duplicity 的一个方便的包装器),我已经在我的异地备份中运行它几年了。
截至 2023 年 2 月初,它们一直失败,并显示以下消息:
===== Begin GnuPG log =====
gpg: WARNING: server 'gpg-agent' is older than us (2.2.4 < 2.2.19)
gpg: Note: Outdated servers may lack important security fixes.
gpg: Note: Use the command "gpgconf --kill all" to restart them.
gpg: encrypted with 4096-bit RSA key, ID XXXXXXXXXXXXXXXX, created 2020-09-16
"duplicity_enc (Key for duplicity encryption)"
gpg: public key decryption failed: Bad passphrase
gpg: decryption failed: No secret key
===== End GnuPG log =====
似乎有几个可能的罪魁祸首。第一行关于'gpg-agent' is older than us
可能相关?但无法查明真相。我以为我可能运行了多个版本的 gpg-agent,但我能找到的唯一一个是 v2.2.4。可能是个幌子。
其次,脚本使用 --pinentry loopback - 虽然我相信这是 gpg2.2.* 的默认设置。我考虑使用 loopback 选项的原因是,如果我检查密钥以便提示输入密码,一旦我输入了密码,脚本就会运行而不会出错。但是,这是作为 cron 任务在夜间运行的,所以我无法手动输入密码。我实际上使用的是脚本中有密码的签名密钥。
我正在使用 duplicity 1.2.2
有些东西似乎在 1 月底更新了,但我不知道是什么。如能提供任何帮助,我将不胜感激。
答案1
duplicity 手册页有一个部分“关于对称加密和签名的说明”
使用命令行上的 gpg 二进制文件同时签名和对称加密(如 duplicity 中使用的)是一个特别具有挑战性的问题。测试表明,以下组合被证明是有效的。
- 正确设置 gpg-agent。使用选项 --use-agent 并在 gpg-agent 的对话框中输入两个密码(对称和签名密钥)。
- 使用您选择的对称加密的密码,但签名密钥有一个空密码。
- 对称加密使用的 PASSPHRASE 与签名密钥的密码相同。
这些可以 1:1 应用于使用加密密钥和不同的签名密钥。关键是。duplicity 只能提供一个密码环境变量。
如果您想使用 gpg-agent,请添加 duplicity 选项--use-agent
,并--pinentry loopback
在当前 duplicity 已经需要时删除它。
附注:您可以考虑切换到 duply 前端,它仍然由我维护;)
祝你好运.. ede/duply.net