Ubuntu 16.04의 내 시스템 /
에는 암호화되지 않은 파티션이 하나 있지만 LUKS는 3개의 파티션에 ZFS zpool을 암호화했습니다. 시스템이 제대로 부팅되도록 하려면 ZFS 및 기타 서비스(예: 데이터베이스, 네트워크, 이메일 등)가 시작되기 전에 LUKS 볼륨을 잠금 해제하고 싶습니다. 이 작업은 SSH를 통해 원격으로 수행해야 합니다.
3개의 파티션을 추가한 후 /etc/crypttab
시스템이 부팅되고 initramfs
해당 단계 이후에 잠금 해제(및 비밀번호 프롬프트)가 이루어질 때까지 기다립니다. 그러나 원격 부팅 시 LUKS 잠금 해제가 수행되는 일반적인 방법은 "실패" 라고 dropbear
말하고 initramfs
3개의 파티션이 시스템에 없기 때문에 계속하는 것 입니다 . 이 경우 이는 원격 잠금 해제 보다 우선시되거나 원격 잠금 해제가 비활성화됨을 의미하므로 바람직 하지 않습니다.fstab
initramfs
systemd
systemd
crypttab
OpenSSH
dropbear
가능한 더러운 해킹은 sleep 300
initramfs에 하나를 추가하여 로그인 dropbear
하고 잠금을 해제할 시간을 주는 것이지만 이 역시 권장되지 않습니다. 이 문제를 해결하기 위한 두 가지 옵션이 있지만 어느 것이 가장 좋은지 확실하지 않으며 구현 방법도 모르겠습니다.
원격 또는 로컬 잠금 해제를 활성화하고 이전에 부팅된 적이 있는지
systemd
확인하기 위해 부팅 순서를 변경합니다 .networking
OpenSSH
crypttab
계속하기 전에
initramfs
중요한 파티션이 잠금 해제될 때까지 기다리십시오systemd
.
답변1
- 우분투에서 luk 잠금 해제
- /etc/crypttab 끝에 ",initramfs"를 추가하세요.
root@a:~# cat /etc/crypttab
vda6_crypt UUID=9f420e32-0821-4cc8-a87e-59db96a12df0 none luks,discard
vdb_crypt UUID=8632fd8d-46ca-4c82-931c-6f6e04066465 none luks,discard,initramfs
- 업데이트-initramfs -u
- /cryptroot/crypttab 파일을 확인하세요.
root@a:~# unmkinitramfs /boot/initrd.img-5.8.0-50-generic /tmp/initramfs
root@a:~# cat /tmp/initramfs/main/cryptroot/crypttab
vda6_crypt UUID=9f420e32-0821-4cc8-a87e-59db96a12df0 none luks,discard
vdb_crypt UUID=8632fd8d-46ca-4c82-931c-6f6e04066465 none luks,discard,initramfs
답변2
저는 현재 그러한 시스템을 구축 중이지만 debianstretch에 있습니다. 실제 컴퓨터 자체를 실제로 설정하기 전에 가상 머신에서 실험을 하고 있습니다. 가상 머신에 매우 유사한 설정이 있습니다.
/에 대한 zpool 이미지에는 2개의 디스크가 있지만 /boot에는 없습니다. /boot는 md0에 있습니다. zpool은 LUKS 위에 위치합니다. EFI를 사용하세요.
root@zstaging:~# cat /proc/1/comm
systemd
root@zstaging:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
+-sda1 8:1 0 256M 0 part
¦ +-md0 9:0 0 256M 0 raid1 /boot
+-sda2 8:2 0 256M 0 part /boot/efi
+-sda3 8:3 0 19.5G 0 part
¦ +-disk0_crypt 253:0 0 19.5G 0 crypt
+-sda9 8:9 0 9M 0 part
sdb 8:16 0 20G 0 disk
+-sdb1 8:17 0 256M 0 part
¦ +-md0 9:0 0 256M 0 raid1 /boot
+-sdb2 8:18 0 256M 0 part
+-sdb3 8:19 0 19.5G 0 part
¦ +-disk1_crypt 253:1 0 19.5G 0 crypt
+-sdb9 8:25 0 9M 0 part
sdc 8:32 0 20G 0 disk
sr0 11:0 1 1.8G 0 rom
root@zstaging:~# zpool status
pool: rpool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
disk0_crypt ONLINE 0 0 0
disk1_crypt ONLINE 0 0 0
errors: No known data errors
관련 파일 및 설정:
root@zstaging:~# cat /etc/fstab
UUID=648bfa4b-1b5f-480a-bb26-b3abffb4a6de /boot auto defaults 0 0
PARTUUID=1673f966-173b-4128-84d5-4e8d5810efef /boot/efi vfat defaults 0 1
root@zstaging:~# cat /etc/crypttab
disk0_crypt UUID=26194846-ba49-4e53-ab0b-857b0dad2021 none luks
disk1_crypt UUID=ef44b66a-8706-4be2-bd12-a30d40de9669 none luks
root@zstaging:~# cat /etc/initramfs-tools/conf.d/cryptroot
target=disk0_crypt,source=UUID=26194846-ba49-4e53-ab0b-857b0dad2021,key=none,rootdev
target=disk1_crypt,source=UUID=ef44b66a-8706-4be2-bd12-a30d40de9669,key=none,rootdev
set CRYPTSETUP=y in /etc/cryptsetup-initramfs/conf-hook
# vi /etc/default/grub
replace GRUB_CMDLINE_LINUX="" with GRUB_CMDLINE_LINUX="boot=zfs"
Remove quiet from: GRUB_CMDLINE_LINUX_DEFAULT
Uncomment: GRUB_TERMINAL=console
# update-initramfs -u -k all
# update-grub
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --no-floppy
모두 괜찮습니다. 한 번에 두 개의 디스크를 잠금 해제하라는 메시지가 표시되었고 잘 진행되었습니다. /etc/fstab에 zfs 콘텐츠를 나열할 필요가 없습니다. 예, initramfs 등은 /etc/fstab에 대해 불평하지만 지금까지는 괜찮습니다.
원격으로 잠금해제도 할 수 있어요
# apt-get install dropbear-initramfs busybox
# vi /etc/dropbear-initramfs/authorized_keys
Paste my SSH pubkey
# chmod 400 /etc/dropbear-initramfs/authorized_keys
# update-initramfs -u
in another machine that has my SSH keys, add a custom section in ~/.ssh/config:
Host zstaging_unlock
HostName <ip_of_zstaging>
User root
HostKeyAlias zstaging_unlock
to remote unlock zstaging, from remote machine:
$ ssh zstaging_unlock
and follow prompts
화타이