更新:

更新:

我已经毁坏了我的 Mint Linux 安装。我只想访问我的远程店面。所以发生的事情是我的主目录中的 ICEauthority 文件遇到了问题。因此,根据互联网上的不同指示,我得出的结论是,我可以将主目录递归设置为 chmod 755 以允许该文件工作……最终我遇到了系统加载问题。最终,通过将主目录设置为 root 的可执行权限,我能够获得读/写访问权限......但后来我重置了我的机器哦为什么哦为什么我重置了我的机器! - 现在系统向我抛出与 ICEauthority 相同的错误,但它永远不会让我进入操作系统,因为磁盘已加密。我尝试过的任何方法似乎都不起作用,而且我没有原始的安装种子。我也尝试过 sudo ecryptfs-recover-private 但我的系统只是说没有这样的文件或目录:

frankenmint@honeybadger /home $ sudo ecryptfs-recover-private
INFO: Searching for encrypted private directories (this might take a while)...
INFO: Found [/home/.ecryptfs/frankenmint/.Private].
Try to recover this directory? [Y/n]: y
INFO: Found your wrapped-passphrase
Do you know your LOGIN passphrase? [Y/n] y
INFO: Enter your LOGIN passphrase...
Passphrase: 
Inserted auth tok with sig [979c6cdf80d2e44d] into the user session keyring
mount: No such file or directory
ERROR: Failed to mount private data at [/tmp/ecryptfs.Hy3BV96c].

我真的很担心,因为我有重要的文件存储在虚拟机上......如果我可以访问这些文件,那么我将毫无疑虑地取消设置并重新开始

答案1

我发现先运行sudo bash然后ecryptfs-recover-private以 root 身份运行(而不是通过 sudo)是有效的。不知道为什么它应该有所不同。

编辑:

长话短说:

# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase - | ecryptfs-add-passphrase --fnek -
    < Type your login password here >
Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring

您将不会看到提示,并且必须在上述命令中盲目输入您的登录密码。

aaaaaaaaaaaaaaaa将下面的和替换bbbbbbbbbbbbbbbb为上面输出中括号之间的十六进制签名,按顺序:

# mount -i -t ecryptfs -o ecryptfs_sig=aaaaaaaaaaaaaaaa,ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb,ecryptfs_cipher=aes,ecryptfs_key_bytes=16 /mnt/crypt/.ecryptfs/user/.Private /mnt/plain

预赛

事实证明,仅仅以 root 身份运行对我来说并不能可靠地工作;有时会,有时则不会。基本上,ecryptfs 似乎有错误并且对用户非常不友好,经常混淆登录密码和挂载密码。在经历了一个又深又黑的兔子洞之后,我有一些应该有所帮助的提示。这些说明适用于 Ubuntu 17.10、ecryptfs-utils 111-0,在开始之前您应该成为 root。我假设您想将主目录从/mnt/crypt(应该已经安装)安装到/mnt/plain,并且您应该替换user为用户名。

轻松开始

首先要尝试的是:

# ecryptfs-recover-private /mnt/crypt/.ecryptfs/user/.Private

如果这有效,那么你很幸运。如果没有,它可能会给出来自mountabout 的错误消息no such file or directory。这是极具误导性的:它真正的意思是您的安装密码错误或丢失。

获取签名

这是重要的部分:我们需要验证 ecryptfs 是否确实尝试了正确的挂载密码。必须先将密码加载到 Linux 内核中,然后 ecryptfs 才能挂载您的文件系统。 ecryptfs 通过签名向内核请求它们。签名是一个 16 字节的十六进制值(并且对加密不敏感)。您可以找到 ecryptfs 所期望的密码签名:

# cat /mnt/crypt/.ecryptfs/user/.ecryptfs/Private.sig
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb

记住这些。目标是将带有这些签名的密码加载到内核中,然后告诉 ecryptfs 使用它们。第一个签名 ( aaaaaaaaaaaaaaaa) 用于数据,第二个签名 ( bbbbbbbbbbbbbbbb) 是文件名加密密钥 (FNEK)。

获取挂载密码

这个命令会询问你登录密码(带有误导性提示),并输出您的密码:

# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase

复制这个但是当心!!,因为这在密码学上极其敏感,是王国的钥匙。

尝试交互式安装

接下来要尝试的是:

# mount -t ecryptfs /mnt/crypt/.ecryptfs/user/.Private /mnt/plain

这里最重要的是mount需要你的(超级敏感的)安装密码我们刚刚复制的(不是您的登录密码)。

这会问你一些问题,你可以接受默认值除了说是Enable filename encryption。它可能会向您发出警告并要求缓存签名;您可以对两者都说“是”,但请仔细检查您是否拥有正确的安装密码。

mount您将看到已决定为您尝试的选项:

Attempting to mount with the following options:
  ecryptfs_unlink_sigs
  ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb
  ecryptfs_key_bytes=16
  ecryptfs_cipher=aes
  ecryptfs_sig=aaaaaaaaaaaaaaaa
Mounted eCryptfs

如果签名错误(与您从 中获得的签名不匹配Private.sig),安装将无法工作。

...但它会毫无帮助地报告它确实如此。您必须执行ls /mnt/plain并整理文件才能确定。此时,您还可以查看/var/log/syslog并验证 ecryptfs 是否正在寻找与我们相同的签名。

ecryptfs 显然存在两个严重问题,我们必须解决它们。

将密钥加载到内核中

如果交互式挂载没有帮助,我们必须自己将密钥加载到内核中,并在挂载选项中手动指定它们。

# ecryptfs-add-passphrase --fnek

并粘贴你的(超敏感)安装密码从上面复制的。这应该输出:

Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring

手动安装

现在密码短语已加载到内核中,我们只需告诉 mount 使用它们即可:

# umount /mnt/plain
# mount -i -t ecryptfs -o ecryptfs_sig=aaaaaaaaaaaaaaaa,ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb,ecryptfs_cipher=aes,ecryptfs_key_bytes=16 /mnt/crypt/.ecryptfs/user/.Private /mnt/plain

您会注意到这些选项与交互式挂载打印出的选项类似,只是我们手动告诉 ecryptfs 发生了什么。

希望这能起作用。如果没有,您可以使用 检查密钥是否已使用正确的签名加载到内核中keyctl list @u,这应该至少打印出您期望的两个签名。

答案2

致本次问答的未来观众:相同的表面症状可能是由不同的根本原因引起的。症状如下:

INFO: Found [/home/.ecryptfs/frankenmint/.Private].
Try to recover this directory? [Y/n]: y
INFO: Found your wrapped-passphrase
Do you know your LOGIN passphrase? [Y/n] y
INFO: Enter your LOGIN passphrase...
Passphrase: 
Inserted auth tok with sig [979c6cdf80d2e44d] into the user session keyring
mount: No such file or directory
ERROR: Failed to mount private data at [/tmp/ecryptfs.Hy3BV96c].

就我而言,这个答案掌握了解决问题的关键。问题是我试图在 Tmux 会话中通过 SSH 远程执行所有操作,这会以某种方式弄乱用户会话密钥环。

上述答案建议评论某一行/etc/pam.d/sshd并在新会话中重试,但这对我不起作用。有效的简单解决方法是在现场进行,完全避免 SSH 和 Tmux。

更新:

深受启发这个答案,我能够使用以下方法安装我的旧加密主目录,同时在 Tmux 会话中通过 SSH 连接:

假设旧的根分区(/home/以前的位置)安装在/mnt/oldroot/,旧用户名是olduser

mkdir -p ~/.ecryptfs
echo "/mnt/oldroot/home/.ecryptfs/olduser/.Private /mnt/oldroot/home/olduser ecryptfs" > ~/.ecryptfs/oldhome.conf
cp -a /mnt/oldroot/home/.ecryptfs/olduser/.ecryptfs/Private.sig ~/.ecryptfs/oldhome.sig

# This will prompt for the old login password:
ecryptfs-insert-wrapped-passphrase-into-keyring /mnt/oldroot/home/.ecryptfs/olduser/.ecryptfs/wrapped-passphrase

# This will mount the old decrypted home contents over /mnt/oldroot/home/olduser:
mount.ecryptfs_private oldhome

相关内容