从命令行挂载加密的卷?


86

如果我有一个加密的外部磁盘(或不在fstab中的内部磁盘),我会在Nautilus中看到一个针对它的条目-带有“ X GB加密卷”之类的条目。我可以单击该卷,然后提示您输入密码来解密和安装设备。

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

这个wiki页面以及我可以找到的其他文档,仅涉及解密设备的GUI方法。但这在无头服务器或SSH登录的情况下不会实现。是否有一种简单的方法可以使设备/media像使用GUI一样安装到自动位置?

(我不是在问加密的主目录,我知道ecryptfs-mount-private。这个问题是关于其他加密卷的。)


+1用于区分文件系统整体加密和加密主目录之间的区别
XavierStuvw,

继续。根据askubuntu.com/q/1030572/446253的说法,Ubuntu 18.04已将对单目录加密的支持降级为全磁盘加密,这一区别已成为热门话题。对于包括我在内的某些人来说,这是迁移至其中的困难之源无缝地18.04
XavierStuvw

Answers:


61

@GeorgSchölly的答案中的步骤当时对我不起作用,尽管它们现在可能会起作用,但之后便有一些Ubuntu版本。那时,在执行该sudo mount /dev/mapper/my_encrypted_volume /media/my_device步骤之后,我得到了错误:

挂载:未知文件系统类型'LVM2_member'

使用udiskctl解锁并安装磁盘

相反,我使用udisksctl了与udisksd服务交互的命令行界面。

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

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

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

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

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

用udiskctl锁定磁盘

卸载设备:

udisksctl unmount -b /dev/mapper/ubuntu--vg-root

您首先需要停用ubuntu-vg卷组中的所有逻辑卷。否则,如果您尝试将其锁定(更多信息),则会出现“设备繁忙”的错误提示:

sudo lvchange -an ubuntu-vg

然后,您将能够锁定加密分区

udisksctl lock -b /dev/sdb5

笔记

  • udisksctl命令被执行,而不 sudo
  • 设备映射器名称:该ubuntu--vg-root命名可能跨越Ubuntu的版本改变(例如我已经看到了所谓的system-rootubuntu-root太)。一种简单的查找名称的方法是在解锁LUKS分区后运行以下命令:

    ls -la /dev/mapper

    然后查看ls命令的输出,您通常需要将名称链接到的名称/dev/dm-1

  • 设备映射器名称,Alternative:运行先前命令的替代方法:

    lsblk -e7

    在那里,您将能够以树状视图查看设备名称映射。该-e 7选项用于从输出中排除由已安装的快照创建的回路设备(ID 7)。只是为了减少混乱。

  • 逻辑卷名:您可以运行sudo lvs命令来查找卷组和逻辑卷的名称
  • 磁盘应用程序:锁定分区之前,GNOME磁盘应用程序不会自动停用逻辑卷。即使您已通过GUI成功解锁了分区,也需要转到命令行并执行sudo lvchange -an ubuntu-vg命令,然后才能从GUI锁定它。

1
我认为这是最好的答案,因为我怀疑这差不多是鹦鹉螺使用libudisks2所做的事情。另外,我已经对此进行了测试,可以作为非特权用户正常工作。
Jaap Versteegh,2015年

9
不幸的是我得到错误的Object /org/freedesktop/UDisks2/block_devices/dm_2d3 is not a mountable filesystem.任何建议?
wawa 2015年

1
@wawa我遇到了同样的问题,并在此答案中解决了问题askubuntu.com/a/895508/334823
raphael

2
快进5年了,我发现自己不得不再次拯救加密分区。我使用了一个Ubuntu 18.04实时USB记忆棒,并按照我之前描述的相同步骤进行操作。和以前一样,它们运行良好,我不需要sudo执行它们。
David Planella '18

1
@Selah,我扩展了答案以更好地说明用于安装的设备路径。对于mwfearnley:值得一看的是您登录用户的权限。
David Planella

87

您的卷可能已使用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

因此,即使我可以通过GUI,也不能以非特权用户身份进行操作?

这实际上取决于您的系统设置。我相信只要您的系统允许您的用户访问设备,大多数命令就可以正常工作。
GeorgSchölly

1
Ubuntu 15.04附带了该udisks2软件包udisks,而前者将其重命名udisksctl
skierpage

不幸的是,不适用于ubuntu 16.04。挂载:未知文件系统类型'LVM2_member'–
Selah

@Selah:听起来您正在尝试解密不是LUKS卷的内容。也许您需要使用以外的其他东西/dev/sda1
GeorgSchölly17年

22

如果出现此错误:

mount: unknown filesystem type 'LVM2_member'

跑:

sudo apt-get install lvm2
sudo lvscan

然后激活您看到的所有LVM

sudo vgchange -ay

然后重新运行安装:

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

7
最后一行不一定正确,因为您可能仍然会遇到相同的错误。而是安装与lvscan一起列出的驱动器之一,而不是/dev/mapper/my_encrypted_volume
Weasemunk

这对我没有用。相同的错误装载:未知的文件系统类型'LVM2_member'。也许是因为我正在从闪存驱动器启动?
Selah

@SeanScott非常感谢……我现在使用安装程序加密驱动器,我正试图恢复数据并必须重新学习这些东西……d'oh
CameronNemo

13

我遇到的一个问题是重复的卷组:我的恢复系统和要恢复的驱动器都是具有LVM的ubuntu系统。这就是为什么我有两个ubuntu-vg卷组(vgdisplay将显示两个卷组,每个都有各自的UUID,但我无法进入其逻辑卷)。

我的解决方案基于Georg的答案:

  • 启动实时Linux(这样就不会遇到重复的卷组名称)
  • sudo cryptsetup luksOpen /dev/sdaX my_encrypted_volume
  • 出现提示时输入密码
  • sudo vgscan 现在应该拾取包含的卷/组。

  • 未来的龙:我们现在正在更改卷组名称。您将无法引导继续向前行驶!

    用于sudo vgrename ubuntu-vg ubuntu-vg2重命名卷组。

    如果你需要开机,关机该驱动器,你可以再做这些步骤,但重命名卷组到Ubuntu-VG。另一种可能性是将引导配置更改为新的vg名称。

现在,解决了重复的vg-name,我可以重新启动到我的常规系统中,重做cryptsetup...vgscan然后将其挂载到/dev/mapper/ubuntu--vg2-root您喜欢的任何位置。


2
看起来您也sudo vgdispay可以找到UUID并使用它代替重复的名称,以便仅重命名一个卷。也就是说,抓住UUID,然后sudo vgrename <uuid> old为我工作。
mpontillo '16

我现在无法测试Mike的建议,但是如果可行,那比重命名卷组更好!
amenthes

5

sdb1是一个示例,您应该输入设备名称,所有这些命令都不需要root特权

解锁加密磁盘

udisksctl unlock -b /dev/sdb1

插入正确的密码后,它将输出以下内容:/ dev / sdb1解锁为/ 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

2
disksctl mount -b / dev / dm-4对象/ org / freedesktop / UDisks2 / block_devices / dm_2d4不是可安装的文件系统。
DevilCode '16

对不起,您解决了这个问题吗?(使用不可安装的FS ...就像我一样)
Oleg Tarasenko

1
同样的问题,请参阅此答案以获取对我有用的内容askubuntu.com/a/895508/334823
raphael

3

以上所有答案均假设用户已经知道哪个分区是加密分区。来自一个不太喜欢命令行的人,我期望得到一些用户友好的答案……所以我这里的2cents。

  1. 打开ubuntu的“磁盘”应用程序。
  2. 在左侧面板中找到已安装的硬盘。
  3. 单击名称中带有“ LUKS”的分区:这样,您可以在下面的“设备”文本中看到其安装点(在我的情况下:)/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重命名卷组!),我将在上面引用它(以防万一该链接损坏了……)。 :

如果运行ls -la /dev/mapper/,应该会看到一个luks-xxxxxx-xxxxx-xxxx或类似的文件。这是Ubuntu在对话框中提示输入加密密码但无法打开该密码时创建的映射(所有对话框所做的只是调用luksOpen并将其映射到该/ dev / mapper / luks-xxx文件)。现在:

  1. 通过运行sudo pvdisplay命令来确保您的物理卷可用。应该是/ dev / mapper / luks-xxx-。
  2. 通过运行获取卷的uuid sudo pvs -o +vg_uuid。uuid将是一直显示在最右边的值,其中包含7个破折号分隔的值。将它们复制到某个地方,因为我们将在下一步中使用它们。请勿混淆使用或复制错误的内容。仅将其复制到当前/ dev / mapper / luks-xxx-任何设备。
  3. 通过运行以下命令sudo vgrename UUIDOFYOURDISKHERE oldhd更改旧磁盘的卷组您可以将“ oldhd”更改为所需的任何内容,只要它与当前磁盘的卷组名称不同即可。执行此步骤可消除与卷组名称的冲突,这将使您现在可以使卷可用。
  4. 运行命令vgchange -a y以使卷处于活动状态。
  5. 在某个位置为安装点创建一个文件夹,例如: sudo mkdir /media/<yourUserName>/someDir
  6. 安装它:sudo mount /dev/oldhd/root /mnt/oldhd
  7. 处理ubuntu-vg完文件后,如果希望卷仍可引导,则应将卷组重命名为。

2

对于那些甚至不想使用GUI工具来确定对哪个分区进行加密的人。

  • 找到任何加密分区

    lsblk -lf | grep LUKS
    

    -l请求“列表”格式-我们不需要树
    -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不返回任何消息。


2

我从先前的答案中走了几条路,只有先前答案的组合才对我有用。他做了我所做的一切,一切正常,发生了什么错误以及我的解决方法。

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

udisksctl unlock -b /dev/sda3

其中sda3是加密分区。该命令对我不起作用,我不确定为什么,所以我使用了以下命令:

sudo cryptsetup luksOpen /dev/sda1 my_encrypted_volume

它与我一起工作,因此我不需要安装它,因为它在实时启动中就已经存在。

现在,我需要安装HD,这不是一件简单的事情:我尝试过:

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,然后双击选项卡以查看其余选项。将硬盘安装为:

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/

1

您可以分两步安装它,我有一个脚本示例。

注意:服务udiskctl会在/ media下挂载东西,它是专为桌面用户安装USB记忆棒而设计的。如果要将设备安装在其他位置,则不是您要寻找的解决方案。

这是我的工作。在此示例中,我的加密设备是使用lvm制成的分区,但这并不重要。它是ext4格式的分区。它以加密形式存在于

/dev/myvg/opt1 

加密的部分像这样“打开”(解密)

  STEP 1:  sudo cryptsetup luksOpen /dev/myvg/opt1 opt1_opened

(在这里输入密码)

最后一个参数是对解密块设备的临时引用。重新启动后,“映射”将消失,因此您可以根据需要每次选择不同的名称。

现在可以在设备上看到它:

ls /dev/mapper
control  myvg-opt1  myvg-root  opt1_opened

您可以安装此设备:我们现在有一个ext4设备。为了方便起见,在/ etc / fstab中添加一行

/dev/mapper/opt1_opened /opt1   ext4    noauto,users    0       0

并设置挂载点(在我的示例中:sudo mkdir /opt1,然后根据需要设置权限)如果在步骤1中使用了名称opt1_opened,则这是第二步安装:

STEP 2: mount /opt1   #the fstab line lets users mount, so no need for sudo

并且已安装。

因此,一个bash脚本:

#!/bin/bash
#needs to be run sudo
read -s -p "Enter LUKS password: " luks_password
printf $luks_password | cryptsetup luksOpen /dev/myvg/opt1 opt1_opened --key-file -
sudo -u tim mount /opt1


0

寻找相同的...

这些mkdir步骤是我进一步查看的原因,我也进行了修改policykit以允许用户挂载而无需先询问root passwd,然后再询问加密的卷密码,因此,这样做sudo也太过致命了。

我的解决办法,我发现是使用的gvfs-mountgvfs-bin包。现在,gvfs-mount -d /dev/sda7我只要求输入加密的密码,并将其安装在下/media/VOLUME_LABEL


没有运气。我采取的步骤:首先,cat /proc/partitions确定驱动器的/ dev标签。第二,gvfs-mount -d /dev/sdf1。这给出了错误“设备文件/ dev / sdf1没有卷”。不过,这看起来很近!
2012年

这个对我有用。奇怪的是,不是通过/dev/disks/by-label/by-uuid而是通过/dev/sdxx
Redsandro

出现消息“设备文件/ dev / sdf1没有卷”,直到您从/ etc / fstab中删除相应的设备为止。之后,gvfs-mount按设计工作
dbzix 2013年

仅供参考:gvfs-mount -d /dev/sdaX在Linux Mint 17.3中对我来说非常完美-与GUI一样不需要密码。
乔纳森·克罗斯

0

在我的Chromebook上(使用权杖)Ubuntu Xenial 16.04,我在发布时发现:

sudo cryptsetup luks打开/ dev / sda1 my_encrypted_volume

根据以上发布内容并输入我的密码,我会收到“此密码无可用密钥”。但是,偶然地,我发现(而且很奇怪!)当我在cryptsetup命令中添加“ --debug”时,整个工作正常!然后,我可以挂载该卷并访问文件。

要求文件管理器Thunar执行安装结果“未授权执行操作”。错误。我无法找到解决方法,但是由于我可以在命令行中进行挂载,因此在某种程度上是可以接受的。


0

好的,所以我有一个有效的解决方案专家,如前所述,您mount: unknown filesystem type 'LVM2_member'出错的原因是因为默认情况下,您的linux计算机为外部硬盘驱动器分配了相同的VG名称,因此外部HDD上的所有分区均处于非活动状态。

这是您需要做的:

  1. 拔下外部硬盘驱动器,并使用(sudo vgdisplay command)记录内部VG UUID ,
  2. 现在,插入外部硬盘驱动器,并重命名EXTERNAL HDD的VG组(不是内部的,这会破坏您的包装盒)(vgrename UUID_Number [new-group])。
  3. 检查新名称是否已在VGdiplay中更新,现在激活新的VGroup(vgchange [new_group] -a y),检查所有分区是否已激活(lvscan)。
  4. 现在您应该可以看到所有分区ls /dev/mapper/[new_group],您需要做的就是挂载分区(mount -t ext4 /dev/mapper/[new_group]-data /zez
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.