使用未加密的根卷运行 Ubuntu 18.04。对于我需要做的事情,这很好。但我需要安装和解密辅助磁盘。按照 Red Hat 的指示这里因为每次用谷歌搜索 Ubuntu 和 NBDE/Clevis&Tang 都会带我到那里。
*此过程在 RHEL 7.x 和 CentOS 7.x 上完美运行。
我已经完成了分区(这里不使用 LVM)、加密以及将其绑定到 tang 服务器。
首先我安装软件包:
apt-get install clevis clevis-systemd clevis-dracut clevis-luks
然后我设置磁盘
echo '<TEMPPASS>'| cryptsetup --verbose luksFormat /dev/xvdc1
clevis bind luks -f -k- -d /dev/xvdc1 tang '{"url":"http://<IP>:<PORT>","thp":"<KEY>"}' <<< "<TEMPPASS>"
echo "<TEMPPASS>" | cryptsetup luksRemoveKey /dev/xvdc1
clevis luks unlock -d /dev/xvdc1 -n testluksvol
鲍勃就是你的阿姨。然后我将其格式化并验证它可以安装。
mkfs.ext4 /dev/mapper/testluksvol
mount /dev/mapper/testluksvol /testluksvol
到目前为止一切顺利。我使用 _netdev 将条目添加到 /etc/fstab,如指示所述:
/dev/mapper/testluksvol /testluksvol ext4 defaults,_netdev 0 2
将条目添加到 /etc/crypttab,同样带有 _netdev,尽管我不认为 Ubuntu crypttab 支持该功能,因为它不在 crypttab 手册页中,但无论如何。我们在这里制作 Chef Boy'R'D,而不是世界级的肉酱面:
testluksvol UUID=<DEVICE UUID> none _netdev
最后,启用 clevis-luks-askpass.path
systemctl enable clevis-luks-askpass.path
然后我们重启……它不起作用。所以我们去查看 /var/log/syslog 并看到以下内容:
Jun 22 23:06:22 ubuntu03 systemd[1]: dev-disk-by\x2duuid-72ebf50e\x2dc3de\x2d468a\x2d89c3\x2defc869757a51.device: Job dev-disk-by\x2duuid-72ebf50e\x2dc3de\x2d468a\x2d89c3\x2defc86975
7a51.device/start timed out.
Jun 22 23:06:22 ubuntu03 systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-72ebf50e\x2dc3de\x2d468a\x2d89c3\x2defc869757a51.device.
Jun 22 23:06:22 ubuntu03 systemd[1]: Dependency failed for Cryptography Setup for testluksvol.
Jun 22 23:06:22 ubuntu03 systemd[1]: Dependency failed for dev-mapper-testluksvol.device.
Jun 22 23:06:22 ubuntu03 systemd[1]: Dependency failed for /testluksvol.
Jun 22 23:06:22 ubuntu03 systemd[1]: Dependency failed for Remote File Systems.
Jun 22 23:06:22 ubuntu03 systemd[1]: remote-fs.target: Job remote-fs.target/start failed with result 'dependency'.
Jun 22 23:06:22 ubuntu03 systemd[1]: testluksvol.mount: Job testluksvol.mount/start failed with result 'dependency'.
Jun 22 23:06:22 ubuntu03 systemd[1]: Dependency failed for File System Check on /dev/mapper/testluksvol.
Jun 22 23:06:22 ubuntu03 systemd[1]: [email protected]: Job [email protected]/start failed with result 'dependency'.
Jun 22 23:06:22 ubuntu03 systemd[1]: dev-mapper-testluksvol.device: Job dev-mapper-testluksvol.device/start failed with result 'dependency'.
Jun 22 23:06:22 ubuntu03 systemd[1]: Dependency failed for Local Encrypted Volumes.
Jun 22 23:06:22 ubuntu03 systemd[1]: cryptsetup.target: Job cryptsetup.target/start failed with result 'dependency'.
Jun 22 23:06:22 ubuntu03 systemd[1]: [email protected]: Job [email protected]/start failed with result 'dependency'.
Jun 22 23:06:22 ubuntu03 systemd[1]: dev-disk-by\x2duuid-72ebf50e\x2dc3de\x2d468a\x2d89c3\x2defc869757a51.device: Job dev-disk-by\x2duuid-72ebf50e\x2dc3de\x2d468a\x2d89c3\x2defc86975
7a51.device/start failed with result 'timeout'.
这有点令人沮丧。我之所以选择 18.04,是因为它应该支持 clevis & tang。我想将其集成到运行 tang 服务器的现有环境中。
看在 Linus Torvalds 的份上,有谁能告诉我我做错了什么?
答案1
发现我的磁盘 UUID 不正确。一旦我将其更新为正确的 UUID,整个过程就可以完美运行。
答案2
要创建、加密或解密 LUKS 加密磁盘,您只需使用 cryptsetup。
例如,我将分配一个 test.img 作为空磁盘分区的示例。我将创建一个 LUKS 加密磁盘卷,对其进行格式化,然后挂载它。
fallocate -l 1G test.img
sudo cryptsetup create test test.img
Enter passphrase for test.img:
sudo mkfs -t ext2 /dev/mapper/test
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 5f58a7a0-6139-4ae3-b423-be86dbc90874
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
sudo mount /dev/mapper/test /mnt
df /mnt
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/test 1032088 1284 978376 1% /mnt
然后,您可以使用挂载在 /mnt/ 上的解密卷。卸载并删除解密的卷。
sudo umount /mnt
sudo cryptsetup remove test
稍后当您需要使用挂载加密卷时,只需执行以下操作。
sudo cryptsetup create test test.img
Enter passphrase for test.img:
sudo mount /dev/mapper/test /mnt
df /mnt
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/test 1032088 1284 978376 1% /mnt
如果您希望它在密码提示时自动挂载,请添加以下内容。
mv test.img /
sudo vi /etc/crypttab
并添加以下行
/mnt /test.img none luks
启动时,系统会提示您输入挂载卷的密码。如果您不想输入密码,可以使用密钥文件。
附言:哦,没关系,我刚意识到你需要从网络获取密钥,抱歉。