在Linux中自动挂载LUKS加密设备

在本教程中,您将学习如何在系统启动时在Linux中自动挂载LUKS加密设备。除非您将设备配置为自动挂载,否则默认情况下通常不会自动挂载。但是,如果在系统安装过程中使用LUKS启用了设备加密,通常会设置自动挂载,并且在提供正确的驱动器加密密码后,设备会自动挂载。

请注意,出于安全考虑,IMO自动安装加密设备可能不是一个好习惯。

在Linux中自动挂载LUKS加密设备

在之前的教程中,我们学习了如何在Linux中使用LUKS加密磁盘分区。我们将使用同一设备来演示如何在Linux中自动挂载LUKS加密设备。

下面的命令列出了将用于演示自动安装过程的块设备。

lsblk
NAME                                          MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda                                             8:0    0   15G  0 disk  
├─sda1                                          8:1    0   13G  0 part  /
├─sda2                                          8:2    0    1K  0 part  
└─sda5                                          8:5    0    2G  0 part  [SWAP]
sdb                                             8:16   0    4G  0 disk  
└─sdb1                                          8:17   0    4G  0 part  
  └─luks-242c24d8-ac65-413d-b3a2-eb7f2f0993b0 254:0    0    4G  0 crypt

创建LUKS密钥文件

使用LUKS加密,您可以通过交互提供密码或自动指定包含密码的密钥文件来解锁设备,从而解锁驱动器。

要在Linux中自动挂载LUKS加密设备,则需要使用包含密码短语的密钥文件。

要创建LUKS密钥文件,请使用 dd 命令如下。

dd if=/dev/random of=/etc/.crypt-me bs=32 count=1

因此,我们使用 /etc/.crypt-me 文件作为我们的LUKS密钥文件,可以为您提供不同的文件。上面的命令将随机数据填充到密钥文件中,如下面的命令所示;

xxd /etc/.crypt-me
00000000: 62cc f2b2 b431 fdb5 d908 8cfd b6c5 b27d  b....1.........}
00000010: f38b 877a 6575 279c 3c20 5b36 a5fa ce7d  ...zeu'.< [6...}

将密码短语添加到LUKS密钥文件

创建LUKS密钥文件后,您需要使用 cryptsetup 效用:

cryptsetup luksAddKey <device> <path-to-key-file>
cryptsetup luksAddKey /dev/sdb1 /etc/.crypt-me

系统将提示您输入任何现有密码。

如果您还使用密钥文件指定了现有密码,请使用以下命令;

cryptsetup luksAddKey <device> <path-to-key-file> --key-file <path-to-existing-passphrase-key-file>
cryptsetup luksAddKey /dev/sdb1 /etc/.crypt-me --key-file ~/luks-key

目前,该设备已使用两个按键插槽(按out设置)。要确认,请打印设备详细信息。

LUKS header information
Version:       	2
Epoch:         	4
Metadata area: 	16384 [bytes]
Keyslots area: 	16744448 [bytes]
UUID:          	242c24d8-ac65-413d-b3a2-eb7f2f0993b0
Label:         	(no label)
Subsystem:     	(no subsystem)
Flags:       	(no flags)

Data segments:
  0: crypt
	offset: 16777216 [bytes]
	length: (whole device)
	cipher: aes-xts-plain64
	sector: 512 [bytes]

Keyslots:
  0: luks2
	Key:        512 bits
	Priority:   normal
	Cipher:     aes-xts-plain64
	Cipher key: 512 bits
	PBKDF:      argon2i
	Time cost:  4
	Memory:     1003317
	Threads:    2
	Salt:       b3 c8 b0 69 db 38 cb bd 1c 58 d0 a2 8a b8 92 12 
	            05 47 ca dd c7 3d dd 94 c0 f7 51 04 12 fb 3a 56 
	AF stripes: 4000
	AF hash:    sha256
	Area offset:32768 [bytes]
	Area length:258048 [bytes]
	Digest ID:  0
  1: luks2
	Key:        512 bits
	Priority:   normal
	Cipher:     aes-xts-plain64
	Cipher key: 512 bits
	PBKDF:      argon2i
	Time cost:  4
	Memory:     984615
	Threads:    2
	Salt:       17 9c 29 fc 61 a2 a4 b0 8b 10 42 6d 51 a0 5b 37 
	            77 18 ef db 05 40 79 71 79 88 0a b1 85 41 ee 41 
	AF stripes: 4000
	AF hash:    sha256
	Area offset:290816 [bytes]
	Area length:258048 [bytes]
	Digest ID:  0
Tokens:
Digests:
  0: pbkdf2
	Hash:       sha256
	Iterations: 133338
	Salt:       e1 9b 70 5e 87 25 46 d6 08 20 43 60 6c ae 2c 06 
	            42 fa 61 32 f0 fc ca 5f 10 f9 3d 63 dd 22 a4 96 
	Digest:     e9 62 ab 83 4c 3c 81 88 52 08 42 9b 47 c2 e1 b6 
	            d5 8a 59 88 5c 17 02 54 c4 89 36 7e 5f e0 f5 ec

验证是否可以使用使用以下命令创建的密钥文件来解锁磁盘;

cryptsetup luksOpen <device> <name> --key-file <path-to-key-file>

如果驱动器已打开,请先关闭;否则,请先关闭驱动器。

cryptsetup -v luksClose luks-242c24d8-ac65-413d-b3a2-eb7f2f0993b0 

接下来,验证新密钥文件是否可以解锁LUKS驱动器;

cryptsetup -v luksOpen /dev/sdb1 luks-242c24d8-ac65-413d-b3a2-eb7f2f0993b0 --key-file /etc/.crypt-me

样品输出;

Key slot 1 unlocked.
Command successful.

在系统启动时自动挂载Linux中的LUKS加密设备

使用设备信息更新crypttab文件

接下来,您需要添加一个条目到 /etc/crypttab 描述有关您需要自动挂载的LUKS加密设备的信息。

的条目 /etc/crypttab 应该看起来像;

<target name> <source device> <key-file> <options>

在哪里:

  • target name:描述映射的设备名称。例如,如果您的设备映射为 /dev/mapper/name, 然后 name 是必需的目标。
  • source device:描述包含加密数据的块专用设备或文件。使用UUID = 或LABEL =

您可以使用 blkid 命令。例如:

blkid /dev/sdb1
/dev/sdb1: UUID="242c24d8-ac65-413d-b3a2-eb7f2f0993b0" TYPE="crypto_LUKS" PARTUUID="629e6177-01"

要获取标签,请使用 lsblk 命令;

lsblk -f /dev/sdb1
NAME                                        FSTYPE      LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
sdb1                                        crypto_LUKS       242c24d8-ac65-413d-b3a2-eb7f2f0993b0                
└─luks-242c24d8-ac65-413d-b3a2-eb7f2f0993b0 ext4              e940b45b-dbc8-4c40-aaa5-9acf9fcb2119

另外,您可以使用以下命令获取UUID;

cryptsetup luksDump /dev/sdb1 | grep "UUID"
  • key file:描述用作解密源设备数据的密钥的文件。请注意,密码短语中不能包含换行符。
  • options:描述与加密过程相关的cryptsetup选项。至少,该字段应包含分别为tcrypt的字符串luks或密码,哈希和大小选项。选项的格式: key=value [,key=value …]

咨询 man crypttab 了解更多信息。

因此,这就是我们的设备条目的外观 /etc/crypttab 文件。

luks-242c24d8-ac65-413d-b3a2-eb7f2f0993b0 UUID="242c24d8-ac65-413d-b3a2-eb7f2f0993b0" /etc/.crypt-me luks

使用设备信息更新fstab文件

接下来,您需要更新 /etc/fstab 文件以及设备信息,以定义如何安装LUKS设备。

中的条目 /etc/fstab 文件应采用以下格式:

<file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/luks-242c24d8-ac65-413d-b3a2-eb7f2f0993b0 /mnt/luks-242c24d8 ext4 defaults 0 0

进行相应的更改。

确保安装点存在。

使用 mount 命令,然后才能重新引导系统。如果一切顺利,您应该会看到“成功安装” 适用于您的LUKS设备。

mount -av
/                        : ignored
/mnt/luks-242c24d8       : successfully mounted

现在,您可以重新引导系统以确认相同。

systemctl reboot

重新启动完成后,检查安装;

lsblk
NAME                                          MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda                                             8:0    0   15G  0 disk  
├─sda1                                          8:1    0   13G  0 part  /
├─sda2                                          8:2    0    1K  0 part  
└─sda5                                          8:5    0    2G  0 part  [SWAP]
sdb                                             8:16   0    4G  0 disk  
└─sdb1                                          8:17   0    4G  0 part  
  └─luks-242c24d8-ac65-413d-b3a2-eb7f2f0993b0 254:0    0    4G  0 crypt /mnt/luks-242c24d8

或使用 df 命令。

df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  984M     0  984M   0% /dev
tmpfs          tmpfs     200M  3.1M  197M   2% /run
/dev/sda1      ext4       13G  3.6G  8.5G  30% /
/dev/dm-0      ext4      3.9G   16M  3.7G   1% /mnt/luks-242c24d8

到此,我们的指南就结束了,有关如何在系统启动时在Linux中自动挂载LUKS加密设备的指南。

其他教程;

如何在命令行上使用VeraCrypt加密Ubuntu 18.04上的驱动器

如何在Ubuntu 18.04上使用eCryptFS加密文件和文件夹

在Ubuntu 20.04上安装和设置VeraCrypt

Sidebar