问题描述
如果我有一个加密的外部磁盘(或不在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就在这里。
-
打开ubuntu的”disks”应用程序。
-
在左侧面板中找到已安装的硬盘。
-
单击名称中包含”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 -v
和sudo vgdisplay
显示两个具有相同卷组名称的条目。但是,我找到了一个更好的方法来处理它而不是他的方法(不需要启动到LiveCD来重命名卷组!),在这个link中,我将在上面引用(以防链接被破坏……) :
如果您运行ls -la /dev/mapper/
,您应该看到luks-xxxxxx-xxxxx-xxxx
或某些此类文件。这是当Ubuntu通过对话框提示加密密码但无法打开它时创建的映射(所有对话框都是调用luksOpen
并将其映射到/dev /mapper /luks-xxx文件)。现在:
-
通过运行
sudo pvdisplay
命令确保您的物理卷可用。它应该是/dev /mapper /luks-xxx-whatever。 -
通过运行
sudo pvs -o +vg_uuid
获取卷的uuid。 uuid将是一直显示在右侧的值,包含7个dash-delimited值。复制那些我们将在下一步使用它们的地方。不要混淆UUIDS并复制错误的一个。仅复制当前/dev /mapper /luks-xxx-whatever设备的一个。 -
通过运行以下命令更改旧磁盘的卷组
sudo vgrename UUIDOFYOURDISKHERE oldhd
您可以将”oldhd”更改为您想要的任何内容,只要它与当前磁盘的卷组名称不同即可。执行此步骤可消除与卷组名称的冲突,从而使您现在可以使卷可用。 -
运行命令
vgchange -a y
以使卷处于活动状态。 -
在某处为mountpoint创建一个文件夹,例如:
sudo mkdir /media/<yourUserName>/someDir
-
装载它:
sudo mount /dev/oldhd/root /mnt/oldhd
。 -
处理完文件后,如果希望卷仍可引导,则应将卷组重命名为
ubuntu-vg
。