但是我如何通过命令行来做到这一点呢?
我能找到的这个维基页面和其他文档只提到了使用图形界面的方法来解密设备;但是在无头服务器或SSH登录的情况下,这样做是不可行的。是否有一种简单的方法让设备自动挂载到
/media
中的指定位置,就像在图形界面中那样?(我不是在问关于加密的家目录的问题——我知道
ecryptfs-mount-private
。这个问题是关于额外的加密卷。)/media
中的指定位置,就像在图形界面中那样?ecryptfs-mount-private
。这个问题是关于额外的加密卷。)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
udisks
的位置上使用了udisks2
软件包,而后者将工具重命名为udisksctl
。 - skierpage/dev/sda1
之外的其他方法。 - Georg Schöllysudo mount /dev/mapper/my_encrypted_volume /media/my_device
这一步之后,我遇到了以下错误:
mount: unknown filesystem type 'LVM2_member'
相反,我使用了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
从那里我可以访问数据 :)
卸载设备:
udisksctl unmount -b /dev/mapper/ubuntu--vg-root
首先,您需要停用ubuntu-vg
卷组中的所有逻辑卷。否则,如果您尝试锁定它,您将收到类似于“设备忙”的错误消息(更多信息):
sudo lvchange -an ubuntu-vg
udisksctl lock -b /dev/sdb5
udisksctl
命令时不需要使用sudo
。设备映射器名称:在不同的Ubuntu版本中,ubuntu--vg-root
的命名可能会有所变化(例如,我也看到过它被称为system-root
和ubuntu-root
)。找到名称的简单方法是在解锁LUKS分区后运行以下命令:
ls -la /dev/mapper
然后查看ls
命令的输出,你通常需要的名称将是符号链接到/dev/dm-1
的那个。
设备映射器名称,替代方法:另一种替代上述命令的方法是运行:
lsblk -e7
在那里可以以树状视图查看设备名称映射。选项-e 7
用于从输出中排除由已安装的snap创建的循环设备(ID 7),以减少混乱。
sudo lvs
命令来查找卷组和逻辑卷的名称。sudo lvchange -an ubuntu-vg
命令才能从GUI中锁定它。udisksctl
命令,我需要使用 sudo
,否则会出现错误,类似于 Error unlocking /dev/sdb1: GDBus.Error:org.freedesktop.UDisks2.Error.NotAuthorized: Not authorized to perform operation
。 - mwfearnleysudo
来执行它们。 - David Planellamount: unknown filesystem type 'LVM2_member'
运行:
sudo apt-get install lvm2
sudo lvscan
sudo vgchange -ay
sudo mount /dev/mapper/my_encrypted_volume /media/my_device
/dev/mapper/my_encrypted_volume
。 - Weasemunklvscan
和vgchange
。 - Paul Parkersudo cryptsetup luksOpen /dev/sdaX my_encrypted_volume
sudo vgscan
现在应该能够找到包含的卷/组。
前方高能:我们现在要更改卷组名称。 之后你将无法从该驱动器启动!
使用 sudo vgrename ubuntu-vg ubuntu-vg2
来重命名卷组。
如果你需要从该驱动器启动,你可以再次执行这些步骤,但将卷组重新命名为 ubuntu-vg。另一种可能性是修改引导配置为新的卷组名称。
现在重复的卷组名称问题已解决,我可以重新启动回到我的常规系统,重新执行 cryptsetup...
,vgscan
然后将 /dev/mapper/ubuntu--vg2-root
挂载到任何你喜欢的位置。
sudo vgdisplay
命令来查找 UUID,并使用它来替代重复的名称,以便只对一个卷进行重命名。也就是说,获取 UUID 然后执行 sudo vgrename <uuid> old
对我来说有效。 - mpontillo/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).
$ 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.
sudo pvdisplay
命令来确认。它应该是/dev/mapper/luks-xxx-whatever。sudo pvs -o +vg_uuid
命令获取卷的UUID。UUID将显示在最右边,包含7个由破折号分隔的值。将其复制到某个地方,因为我们将在下一步中使用它们。不要混淆UUID并复制错误的UUID。只复制当前/dev/mapper/luks-xxx-whatever设备的UUID。sudo vgrename UUIDOFYOURDISKHERE oldhd
。你可以将"oldhd"更改为任何你想要的名称,只要它与当前磁盘的卷组名称不同即可。执行此步骤会删除卷组名称冲突,从而使卷现在可用。vgchange -a y
以激活卷。sudo mkdir /media/<yourUserName>/someDir
挂载它:sudo mount /dev/oldhd/root /mnt/oldhd
。ubuntu-vg
。sdb1 这里是一个例子,你应该输入你的设备名称,这些命令都不需要 root 权限。
解锁加密磁盘
udisksctl unlock -b /dev/sdb1
udisksctl mount -b /dev/dm-3
udisksctl unmount -b /dev/dm-3
udisksctl lock -b /dev/sdb1
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
,然后按两次 Tab 键查看其他选项。这会将硬盘驱动器挂载为:
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/
您可以通过两个步骤进行挂载,我有一个脚本示例。
注意:服务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
/dev/mapper/opt1_opened /opt1 ext4 noauto,users 0 0
并创建挂载点(在我的情况下:sudo mkdir /opt1
),然后根据您的要求设置权限。如果您在第一步中使用了名称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
gio mount -d /dev/dm-x
(无需sudo)。gio
自动使用之前由Nautilus或Nemo存储的密码短语。