当前位置: 首页>>技术问答>>正文


从命令行挂载加密卷?

, , ,

问题描述

如果我有一个加密的外部磁盘(或不在fstab中的内部磁盘),我在Nautilus中看到一个条目 – 带有“X GB Encrypted Volume”之类的条目。我可以单击此卷,系统会提示您输入密码来解密和装载设备。

但是我如何从命令行执行此操作?

This wiki page和我能找到的其他文档只涉及解密设备的GUI方法;但这不会在无头服务器或SSH登录的情况下发生。是否有一种简单的方法可以将设备安装到/media中的自动位置,就像使用GUI一样?

(我不是在询问加密的主目录 – 我知道ecryptfs-mount-private。这个问题是关于额外的加密卷。)

最佳解决方案

@GeorgSchölly的答案中的步骤当时对我不起作用,虽然它们现在可以正常工作,之后发布了一些Ubuntu。那时,在sudo mount /dev/mapper/my_encrypted_volume /media/my_device步骤之后我得到了错误:

mount: unknown filesystem type ‘LVM2_member’

使用udiskctl解锁并安装磁盘

相反,我使用了udisksctl,一个与udisksd服务交互的命令行接口。

这是有效的(/dev/sdb5是我的硬盘上标记为crypt-luks的分区):

udisksctl unlock -b /dev/sdb5
udisksctl mount -b /dev/mapper/ubuntu-root

键入第一个命令后,系统将提示您输入加密密码。解锁加密分区后,第二个命令将挂载它。如果成功,您将得到类似于此的消息:

Mounted /dev/dm-1 at /media/dpm/e8cf82c0-f0a3-41b3-ab28-1f9d23fcfa72

从那里我可以访问数据:)

说明

  • 在没有sudo的情况下执行命令。

  • ubuntu-root命名可能会在不同版本的Ubuntu之间发生变化(例如,我也看到它也称为system-root)。找到名称的简单方法是在解锁LUKS分区后运行以下命令:ls -la /dev/mapper然后查看ls命令的输出,您需要的名称通常是符号链接到/dev/dm-1的名称

  • 不过,我注意到使用udisksctl的缺点。解锁后,分区将映射为/dev/mapper中的符号链接。符号链接的名称成为设备的UUID。但是,像initramfs-update这样的工具希望符号链接与/etc/crypttab中的名称匹配,并且除非重命名符号链接,否则将打印错误。作为替代方案,使用cryptsetup luksOpen似乎正确设置符号链接名称。

次佳解决方案

您的卷可能已使用LUKS加密,以下是如何安装它:

你需要:

sudo apt-get install cryptsetup

解密卷:

sudo cryptsetup luksOpen /dev/sda1 my_encrypted_volume

现在您可以像往常一样安装它:

sudo mkdir /media/my_device
sudo mount /dev/mapper/my_encrypted_volume /media/my_device

要再次锁定容器,需要先卸载它:

sudo umount /media/my_device
sudo cryptsetup luksClose my_encrypted_volume

要自动将其放入/media位置,请使用udisks工具

sudo udisks --mount /dev/mapper/my_encrypted_volume

第三种解决方案

如果您收到此错误:

mount: unknown filesystem type 'LVM2_member'

跑:

sudo apt-get install lvm2
sudo lvscan

然后激活你看到的所有LVM

sudo vgchange -ay

然后re-run坐骑:

sudo mount /dev/mapper/my_encrypted_volume /media/my_device

第四种方案

我遇到的一个问题是重复的卷组:我的恢复系统和要恢复的驱动器都是带有LVM的ubuntu系统。这就是为什么我有两个ubuntu-vg卷组(vgdisplay会显示两者,每个都有自己的UUID,但我无法达到他们的逻辑卷)。

我的解决方案建立在Georg的答案之上:

  • 启动live-linux(这样就不会遇到重复的卷组名称)

  • sudo cryptsetup luksOpen /dev/sdaX my_encrypted_volume

  • 在提示时输入您的密码

  • sudo vgscan现在应该获取所包含的卷/组。

  • DRAGONS AHEAD:我们现在正在改变音量组名称。你以后不会开车开车!使用sudo vgrename ubuntu-vg ubuntu-vg2重命名卷组。如果需要从该驱动器启动,可以再次执行这些步骤,但将卷组重命名为ubuntu-vg。另一种可能性是将引导配置更改为新的vg-name。

现在已经解决了重复的vg-name,我可以重新启动到我的常规系统,重做cryptsetup...vgscan,然后在任何你喜欢的地方安装/dev/mapper/ubuntu--vg2-root

第五种方案

sdb1这里是一个你应该输入设备名称的例子,这些命令都不需要root权限

解锁加密磁盘

udisksctl unlock -b /dev/sdb1

插入正确的密码后,它将输出如下内容:unlocked /dev /sdb1 as /dev /dm-3

然后将它挂载到/media /

udisksctl mount -b /dev/dm-3

它应输出如下内容:/media /yourUserName /sdb中的/dev /dm-3

卸下它

udisksctl unmount -b /dev/dm-3

再次锁定它

udisksctl lock -b /dev/sdb1

第六种方案

对于我们这些不想使用GUI工具甚至确定哪个分区是加密的人。

  • 找到任何加密分区

    lsblk -lf | grep LUKS
    

    -l请求”list”格式 – 我们不需要树-f向我们显示文件系统的名称我们得到类似的东西

    sdc2 crypto_LUKS b09d6209-......

  • 解锁我们想要的分区(在我的情况下是/dev/sdc2)

    udisksctl unlock -b /dev/sdc2
    

    -b意味着我们在输入密码后给出了一个块设备的路径,我们得到了肯定的响应,并为下一步提供了必要的信息:

    Unlocked /dev/sdc2 as /dev/dm-6

  • 安装新创建的设备(dm代表设备管理器)

    udisksctl mount -b /dev/dm-6
    

    我们再次获得有用信息的肯定回复:

    Mounted /dev/dm-6 at /media/g/Data.

    (g是我在此系统上的用户名,Data是我用于该分区的标签)

    可能是您的桌面系统/文件管理器已经自动安装了设备,或者您之前自己安装过。然后你得到类似的东西

    Error mounting /dev/dm-6: GDBus.Error:org.freedesktop.UDisks2.Error.AlreadyMounted: Device /dev/dm-6 is already mounted at '/media/g/Data'.

    这没问题,无论如何都可以从加密分区访问数据。

  • 访问数据:ls /media/g/Data

  • 再次卸载设备(使用与安装时相同的名称,命令为unmount,而不是umount :-))

    udisksctl unmount -b /dev/dm-6
    

    如果设备不忙,你会得到

    Unmounted /dev/dm-6.

  • 现在再次锁定分区(你必须记住分区的名称)

    udisksctl lock -b /dev/sdc2
    

    你会得到

    Locked /dev/sdc2.

  • 可选择关闭整个外部磁盘

    udisksctl power-off -b /dev/sdc
    

    使用图形桌面,您可能会收到错误:

    Error powering off drive: The drive in use: Device /dev/sdc3 is mounted (udisks-error-quark, 14)

    在这种情况下,您可以使用udisksctl逐个卸载分区,直到成功为止。 udisksctl power-off不会返回任何消息。

第七种方案

我从前面的答案进入了几条路径,只有之前的答案组合起来对我有用。他做了什么,做了什么,出了什么问题和我的解决方法。

我有一个LUKS加密硬盘,我需要从Ubuntu 15.10的实时启动USB安装。为此,我开始使用以下命令,

udisksctl unlock -b /dev/sda3

其中sda3是加密分区。这个命令对我不起作用,我不知道为什么,所以我使用了以下命令:

sudo cryptsetup luksOpen /dev/sda1 my_encrypted_volume

它与我合作,我不需要安装它,因为它在现场启动中。

现在,我需要安装高清,这不是一个直接的事情:我试过:

sudo mkdir /media/my_device
sudo mount /dev/mapper/my_encrypted_volume /media/my_device

但第二个命令对我不起作用,因此我必须找到一个工作如下:

sudo udisksctl mount -b /dev/mapper/ubuntu--vg-root

那是我的路径..但​​你可以使用路径dev/mapper/ubuntu然后双选项卡来查看其余选项。这将HDD安装为:

Mounted /dev/dm-1 at /media/root/03cf6b80-fa7c-411f-90b9-42a3398529ce

然后我使用以下命令将其挂载为/media/my_device,如下所示:

sudo mount /dev/dm-1 /media/my_device/

工作得很好。

综上所述

sudo cryptsetup luksOpen /dev/sda1 my_encrypted_volume
sudo mkdir /media/my_device
sudo udisksctl mount -b /dev/mapper/ubuntu--vg-root
sudo mount /dev/dm-1 /media/my_device/

第八种方案

上面的所有答案都假设用户已经知道哪个分区是加密分区。来自不喜欢命令行的人,我期待一些user-friendly的答案……所以我的2cents就在这里。

  1. 打开ubuntu的”disks”应用程序。

  2. 在左侧面板中找到已安装的硬盘。

  3. 单击名称中包含”LUKS”的分区:这样您就可以在下面的”Device”文本中看到它的挂载点(在我的例子中:/dev/sdb4)。

然后我尝试像上面提到的那样安装它:

$ sudo cryptsetup luksOpen /dev/sdb4 someNameForMyVolume
Enter passphrase for /dev/sdb4: 

但得到了这个错误:

Cannot use device /dev/sdb4 which is in use (already mapped or mounted).

好的,所以我猜nautilus已经尝试安装它(因为它实际上在我连接USB时提示我输入密码,即使它最终没有显示解密的树)。但是,错误消息并不真正有用,因为它没有告诉我它已经映射/挂载的位置。但是这个命令有助于这种情况:

$ udisksctl unlock -b /dev/sdb4
Passphrase: 
Error unlocking /dev/sdb4: GDBus.Error:org.freedesktop.UDisks2.Error.Failed: Device /dev/sdb4 is already unlocked as /dev/dm-3

啊哈!所以这是/dev/dm-3

但是,当尝试安装它时,它不起作用:

$ udisksctl mount -b /dev/dm-3
Object /org/freedesktop/UDisks2/block_devices/dm_2d3 is not a mountable filesystem.

经过多次修补后,我发现我遇到了duplicate volume groups问题(由@amenthes描述),因为命令sudo vgscan -vsudo vgdisplay显示两个具有相同卷组名称的条目。但是,我找到了一个更好的方法来处理它而不是他的方法(不需要启动到LiveCD来重命名卷组!),在这个link中,我将在上面引用(以防链接被破坏……) :

如果您运行ls -la /dev/mapper/,您应该看到luks-xxxxxx-xxxxx-xxxx或某些此类文件。这是当Ubuntu通过对话框提示加密密码但无法打开它时创建的映射(所有对话框都是调用luksOpen并将其映射到/dev /mapper /luks-xxx文件)。现在:

  1. 通过运行sudo pvdisplay命令确保您的物理卷可用。它应该是/dev /mapper /luks-xxx-whatever。

  2. 通过运行sudo pvs -o +vg_uuid获取卷的uuid。 uuid将是一直显示在右侧的值,包含7个dash-delimited值。复制那些我们将在下一步使用它们的地方。不要混淆UUIDS并复制错误的一个。仅复制当前/dev /mapper /luks-xxx-whatever设备的一个。

  3. 通过运行以下命令更改旧磁盘的卷组sudo vgrename UUIDOFYOURDISKHERE oldhd您可以将”oldhd”更改为您想要的任何内容,只要它与当前磁盘的卷组名称不同即可。执行此步骤可消除与卷组名称的冲突,从而使您现在可以使卷可用。

  4. 运行命令vgchange -a y以使卷处于活动状态。

  5. 在某处为mountpoint创建一个文件夹,例如:sudo mkdir /media/<yourUserName>/someDir

  6. 装载它:sudo mount /dev/oldhd/root /mnt/oldhd

  7. 处理完文件后,如果希望卷仍可引导,则应将卷组重命名为ubuntu-vg

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1306.html,未经允许,请勿转载。