双重还原失败:没有密钥

Pab*_*abi 6 encryption backup duplicity gnupg

我正在设置从本地机器到远程服务器的备份。
我在本地机器上生成了 gpg 密钥并运行了一个测试备份:

PASSPHRASE="MyGPGPassphrase" duplicity --encrypt-key KeyID test scp://user@server/path
Run Code Online (Sandbox Code Playgroud)

备份似乎工作正常,在服务器上创建了三个文件。

我的问题是我无法使恢复工作。
我删除了本地机器上的测试文件并尝试使用以下命令恢复它:

PASSPHRASE="MyGPGPassphrase" duplicity --encrypt-key KeyID scp://user@server/path test
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Synchronizing remote metadata to local cache...
Copying duplicity-full-signatures.20151011T011134Z.sigtar.gpg to local cache.
GPGError: GPG Failed, see log below:
===== Begin GnuPG log =====
gpg: encrypted with 2048-bit RSA key, ID KeyID(of ssb), created 2015-10-11
"Name <email>"
gpg: public key decryption failed: Inappropriate ioctl for device
gpg: decryption failed: No secret key
===== End GnuPG log =====
Run Code Online (Sandbox Code Playgroud)

我在本地机器上导出了 gpg 密钥:
gpg --export-secret-key KeyID > secret.key
gpg --armor --export KeyID > public.key

并使用以下命令将它们导入服务器:
gpg --import secret.key
gpg --import public.key

是否还需要执行其他任何操作才能使还原工作?

编辑:
如果我在没有 PASSPHRASE envduplicity --encrypt-key Key D test scp://user@host/path的情况下执行命令,则无论如何都会创建备份而不要求输入密码。

输出file duplicity-full.20151011T115714Z.vol1.difftar.gpg列出了一个不同的 KeyID,然后是在 --encrypt-key 中指定的那个。我的钥匙圈中没有列出的钥匙。

Pab*_*abi 6

问题是,就像链接的帖子所说的那样,gpg 2.1 从管道中退出了用于密钥身份验证的密码。
需要启用和配置 gpg 代理才能使还原工作。

将以下内容添加到~/.gnupg/gpg.conf

use-agent
pinentry-mode loopback
Run Code Online (Sandbox Code Playgroud)

和你的~/.gnupg/gpg-agent.conf

pinentry-program /usr/bin/pinentry-gtk-2
allow-loopback-pinentry
Run Code Online (Sandbox Code Playgroud)

然后用 重新启动代理echo RELOADAGENT | gpg-connect-agent

即使密钥仅在本地机器上,恢复也能工作。我仍然不明白为什么它在进行增量时不要求输入密码。

  • 第二个文件路径缺少点。它应该是`~/.gnupg/gpg-agent.conf`(与前面提到的文件相同的目录)。 (2认同)