为什么在 Ubuntu 20.04.1 中 Déjà Dup 会失败并出现 gpg:解密失败:会话密钥错误?

为什么在 Ubuntu 20.04.1 中 Déjà Dup 会失败并出现 gpg:解密失败:会话密钥错误?

备份开始时,出现错误

===== Begin GnuPG log =====
gpg: AES256 encrypted data
gpg: encrypted with 1 passphrase
gpg: decryption failed: Bad session key
===== End GnuPG log =====

虽然看起来类似于Duplicity 因会话密钥错误而失败,这似乎不是同一个问题(原始问题已经过时,并通过 gpg 升级/机器重启解决,但在这里不起作用)。

duplicity-inc.20200914T123225Z.to.20200917T121115Z.manifest.gpg使用该命令gpg --verbose --decrypt duplicity-full.20200914T123225Z.manifest.gpg > duplicity-full.20200914T123225Z.manifest成功解密,我可以读取清单,所以我的密码没有问题,这不是纯粹的 GPG 问题。

每次都会发生此错误,勾选“记住密码”只会改变一件事:Deja Dup 显然在备份启动时停止询问密码。

这个“会话密钥”是什么?这是 Deja Dup/duplicity 错误吗?您知道解决方法吗?

答案1

引言评论——问题的可能原因

我遇到了相同或类似的问题。我按照一些建议创建了一个全新的备份,但过了一段时间,问题又出现了。我相信我可能在此期间输入了错误的密码,之后我就无法再进行备份了(就像 Das Auge描述-感谢您的建议)。

快速回答 - 使用较新版本的 Déjà Dup 创建新备份

安装较新版本(42.7)的 Déjà Dup(来自 snap 包)并创建新的备份似乎可以解决我的问题,因为我不需要恢复之前备份的任何内容。

  1. 我删除了旧版本的 Déjà Dup sudo apt remove deja-dup
  2. 我安装了较新版本sudo snap install deja-dup
  3. 由于某种原因,新安装的 Déjà Dup 无法启动,所以我不得不删除~/snap/deja-dup/common/.cache文件夹来解决这个问题。
  4. 我启动了该应用程序,进行了设置并创建了一个新的备份。

第一次备份成功后,我还尝试创建新的增量备份(至少我相信当您单击“立即备份”按钮时会发生这种情况),输入错误的密码(只是为了检查效果),然后输入正确的密码,它就成功了。

详细回答——恢复备份数据的可能选项

我找到了一个链接维基页面考虑到这个话题,我相信(我在问题在官方项目的 GitLab 页面)部分内容引述如下。

如何确认问题

首先,如果您的备份文件位于另一台服务器或 Google Drive 上,请将备份文件下载到本地文件夹。

然后运行以下命令,将 $BACKUPFOLDER 替换为包含备份文件夹的文件夹路径,将 $PASSPHRASE 替换为加密密码:

for i in /$BACKUPFOLDER/*; do echo $i; if gpg --passphrase=$PASSPHRASE --batch --pinentry-mode=loopback --decrypt $i >/dev/null 2>/dev/null; then echo -e "^ \033[0;32mcorrect passphrase\033[0m"; else echo -e "^ \033[0;31mwrong passphrase\033[0m"; fi; done

如果您发现某些文件具有正确的密码,而某些文件具有错误的密码,则您受到了此错误的影响。

也许就你的情况而言,如果你确实有多个备份文件,那么只是有些文件使用错误的密码加密,而不是你已尝试解密的文件。另一方面,就我的情况而言,我没有注意到任何“正确的密码”消息。

如何恢复

如果您没有主动尝试恢复文件,(1)请参见下文升级 deja-dup 以避免将来出现问题,然后(2)删除具有错误密码的文件及其后的任何备份文件以清理备份或(3)直接开始备份到新文件夹。

发现错误的密码

您有可能发现使用了错误的密码。

  1. 打开密码管理器(在应用启动器中搜索“密码和密钥”)。查找名为“备份加密密码”的密码条目。打开它并单击“显示密码”复选框。该密码短语是否与您认为的密码短语相符?如果不相符,则可能是使用了错误的密码短语。
  2. 这可能是您常规密码的拼写错误。使用以下命令尝试几个常见的拼写错误版本,将 $BACKUPFILE 替换为密码错误的文件之一的路径,将 $PASSPHRASE 替换为您尝试的拼写错误版本:
if gpg --passphrase=$PASSPHRASE --batch --pinentry-mode=loopback
--decrypt $BACKUPFILE >/dev/null 2>/dev/null; then echo -e "\033[0;32mpassphrase worked\033[0m"; else echo -e
"\033[0;31mpassphrase did not work\033[0m"; fi

如果您无法弄清楚错误的密码是什么,那也没关系。希望您仍然可以恢复您关心的文件。

手动解压您关心的文件

不幸的是,我们必须对备份卷链进行一些手术。最坏的情况下页面上有关于如何手动解压卷的说明。

如果知道错误的密码,您可以解密手动解压时所需的所有文件。

如果您不知道错误的密码,您将不得不跳过一些备份卷。由于 duplicity 将补丁存储到文件中(而不是每次备份时都存储完整快照),因此跳过卷可能会在以后尝试修补文件时产生问题。但如果您很幸运,您将能够获得所需的所有数据。

由于我找不到正确的密码,我决定尝试安装新版本的 Déjà Dup,正如我在“快速回答”部分中描述的那样。

相关内容