如何更改加密的LVM系统的密码(之前是备用安装,现在是高级功能)?

我使用备选光盘安装了Ubuntu 11.10,并使用加密的LVM对整个系统进行了加密(除了引导)。更新2020年:在Ubuntu安装的“安装类型”步骤中可以选择加密的LVM,点击“高级功能”,然后选择“使用LVM”和“加密”...
一切都像以前一样运行得很好,但我想更改加密LVM的密码。我尝试按照这篇文章的技巧和窍门article,但它不起作用。 输入以下内容后:
sudo cryptsetup luksDump /dev/sda5

它说:“设备/dev/sd5不存在或访问被拒绝。” 我以为加密分区是/dev/sda5。 有什么办法可以更改密码吗?

1糟糕,这确实是个打字错误!我一直都输入/dev/sd5而不是/dev/sda5。谢谢Hamish的提示。所以我用Andreas Härter的信息回答这个问题(blog.andreas-haerter.com/2011/06/18/ubuntu-full-disk-encryption-lvm-luks#tips_and_tricks)。 - Filbuntu
3可能是重复的问题:如何更改LUKS密码? - Gilles 'SO- stop being evil'
1这个回答解决了你的问题吗?如何更改LUKS密码? - Flimm
2@Gilles'SO-stopbeingevil' 是的,这些是重复的问题,但是这个问题有更好的答案,所以我投票将另一个问题作为这个问题的重复关闭,而不是反向关闭投票,尽管另一个问题是先被提出的。 - karel
1@Gilles'SO-stopbeingevil' 感谢你提出这个问题。我理解你的理由,这两个问题非常相似。我的问题是为了寻求命令行答案,而另一个问题则是针对图形界面。我同意karel的观点,这个问题有更好和更详细的答案。但也许两个问题都可以保留,因为它们都受到社区的高度赞赏。感谢你考虑这个问题! - Filbuntu
1@Filbuntu 无论我们是否将其中一个问题标记为另一个问题的重复,它们都可以 - 而且应该 - 保留,因为它们和它们的答案显然都是有价值的。(问题可以被标记为重复而不会被删除。) - Eliah Kagan
7个回答

使用磁盘应用程序:

在Ubuntu 18.04或更新版本中,有可能使用(Gnome) Disks。感谢hintGreg Lever,在点击了一番之后,我找到了Greg提到的内容:

  1. 打开Gnome Disks。
  2. 在左侧面板中选择/点击主物理硬盘。
  3. 点击LUKS加密分区,在本示例中为第3个分区: Screenshot Gnome Disks
  4. 点击编辑图标(齿轮图标)并选择“更改密码”。

如果出现错误,请关闭GNOME Disks并在终端中打开它:sudo gnome-disks
(这对@ScriptAutomate很有帮助,感谢你的提示。)

或者使用命令行:

这是对我有效的答案,Hamish 帮助我发现了我的拼写错误。

警告(对于旧版本的Ubuntu,新版本(例如19.04)应该已经修复了此问题,但还是要小心):如果你只有一个密钥,在添加另一个密钥之前将其删除,那么在重新启动后你的磁盘将无法访问!这也意味着你以后将无法再添加新的密钥。 感谢 wafflkhaimovmr 提供的这些有用的评论。

首先,你需要找出加密的 LVM 分区是哪个,它可能是 sda3,但也可能是 sda5(Ubuntu LVM 的默认设置),sdX2,等等:

cat /etc/crypttab

要添加新密码,请使用luksAddKey命令:
sudo cryptsetup luksAddKey /dev/sda3

要删除现有密码,请使用luksRemoveKey,输入要删除的密码短语即可。
sudo cryptsetup luksRemoveKey /dev/sda3

查看当前使用的加密分区插槽(确保至少显示一个插槽):
sudo cryptsetup luksDump /dev/sda3

引用自这个博客。谢谢。

注意:Flimm体验到Ubuntu的系统键盘布局从Dvorak变成了Qwerty。您无法看到使用的键盘布局(错误编号1862656),也无法选择显示密码(错误编号1862654)。此外,在被迫等待60秒之前,您只有三次尝试的机会(错误编号1862660)。感谢flimm提供的有帮助的评论!


1这是否意味着您可以拥有多个密码来解密磁盘? - bph
6你可以。我已经测试过了。 - bph
2有插槽 - 我相信有八个。每个插槽都是一个解锁选项。如果你愿意,可以设置8个密码。 - Cookie
7警告 在本答案之上,应该有一个免责声明,如果您在添加新密钥之前删除唯一密钥,重新启动后会导致硬盘无法访问! - waffl
4警告 在重启后,当您删除了最后一个密钥后,该磁盘不仅无法使用,而且之后也无法添加新的密钥! - KhaimovMR
2我做完这个之后,不知何故Ubuntu的系统键盘布局从Dvorak变成了Qwerty。我花了很长时间才弄清楚。这是一个缓慢的过程,因为你无法看到你正在使用哪种键盘布局(bug #1862656),也无法选择显示密码(bug #1862654)。此外,你只有三次尝试的机会(bug #1862660)。 - Flimm
1谢谢!使用Gnome Disks时,我遇到了权限错误,直到我关闭它并通过sudo gnome-disks重新打开它。 - ScriptAutomate

从软件管理器下载“Disks”。运行它。选择您的加密设备分区。点击齿轮图标。选择“更改密码短语”。就这样。

3已灰掉 - Madbreaks

查看已使用的插槽:
sudo cryptsetup luksDump /dev/sda5

找出要使用哪个分区
cat /etc/crypttab

如果按照uuid列出的话,使用以下方法。
ls -l /dev/disk/by-uuid/{insert your uuid here}

然后使用
sudo cryptsetup luksAddKey /dev/sda5
sudo cryptsetup luksRemoveKey /dev/sda5

或者

sudo cryptsetup luksChangeKey /dev/sda5

并且为了更快的参考(假设/etc/crypttab中只有1个条目)

sudo cryptsetup luksAddKey /dev/disk/by-uuid/$(cat /etc/crypttab | sed -e "s|\(.*\) UUID=\(.*\) none.*|\2|g")
sudo cryptsetup luksChangeKey /dev/disk/by-uuid/$(cat /etc/crypttab | sed -e "s|\(.*\) UUID=\(.*\) none.*|\2|g")

2cat /etc/crypttab列出UUID时,以下是应该做的步骤: - HelloWorld101

不经思考,我将密码设置得非常长,结果输入起来很麻烦。最后,我使用了以下方法将其更改为更易管理的内容。
sudo cryptsetup luksChangeKey /dev/sda5

加密分区很可能是使用`/dev/sda5`(注意sda5中的a),这可能是您需要使用的设备(除非这只是您问题中的一个打字错误)。
然而,加密设备本身将有另一个名称 - 类似于`/dev/mapper/cryptroot`。对于设备名称,您可以:
- 查看文件`/etc/crypttab` - 这将包含分区和映射器名称,但仅适用于永久分区。 - 运行`mount`命令并查看映射器名称 - 当您通过USB插入加密磁盘时,这很有用。(不过我不确定如何找到实际的底层设备名称)。

在Ubuntu 18.04上运行gnome-disks,您可以通过指向和点击来更改加密的密码。

我在定位分区名称时遇到了问题,所以创建了这个指南:

  1. 找到您的LMV分区

    # 如果没有,请安装jq
    sudo apt-get install jq
    
    # 查找LVM分区
    LVMPART=$(lsblk -p --json | jq -r '.blockdevices[] | select(.children) | .children[] | select(.children) as $partition | .children[] | select(.type == "crypt") | $partition.name')
    
    # 检查是否已找到
    echo $LVMPART
    
        # (可选)
        # 如果以上输出为空,请使用此命令在树视图中找到它
        lsblk -p
    
        # 分区`/dev/some_name`应是具有TYPE为`crypt`的对象的父对象,设置它
        LVMPART=`/dev/some_name`
    
  2. 通过转储检查LVM分区元数据

    sudo cryptsetup luksDump $LVMPART
    
  3. 添加新密钥(您可以拥有多个密钥)

    sudo cryptsetup luksAddKey $LVMPART
    
  4. 再次转储后,您应该看到多个密钥

    sudo cryptsetup luksDump $LVMPART
    
  5. 如果需要,删除旧密钥

    sudo cryptsetup luksRemoveKey $LVMPART