Настраиваем dracut-sshd

Настраиваем разблокировку через ssh зашифрованных luks разделов при загрузке системы.

Важно подметить что /boot раздел должен быть отдельной точкой монтирования и без шифрования как и /boot/efi

  1. Устанавливаем dracut-sshd
1
sudo zypper in dracut-sshd
  1. Создаем конфиг для активации модуля network
1
sudoedit /etc/dracut.conf.d/90-network.conf

с содержимым

1
add_dracutmodules+=" network "
  1. Далее нужно добавить в GRUB_CMDLINE_LINUX параметры для сети
1
rd.neednet=1 ip=dhcp

или указать конкретный адрес и маску, например

1
rd.neednet=1 ip=192.168.1.10:255.255.255.0
  1. Теперь нужно пересобрать образ ядра
1
sudo dracut -f -v
  1. Копируете свой ssh ключ для root с удаленной машины откуда будем подключаться. Подразумевается что он у вас уже есть.
1
ssh-copy-id -i ~/.ssh/id-rsa root@192.168.1.10

P.S. Согласно документации dracut-ssh ищет ключи в указанных файлах

1
2
3
/root/.ssh/dracut_authorized_keys
/etc/dracut-sshd/authorized_keys
/root/.ssh/authorized_keys
  1. После этого можно перезагружаться, разблокировка по ssh должна работать.

Процесс разблокировки

  1. Подключаемся по ssh
1
ssh root@192.168.1.10
  1. Вы должны увидеть нечто подобное
1
2
3
4
5
6
7
8
9
10
Welcome to the early boot SSH environment. You may type

 systemd-tty-ask-password-agent

(or press "arrow up") to unlock your disks.

This shell will terminate automatically a few seconds after the
unlocking process has succeeded and when the boot proceeds. 

initramfs-ssh:/root#
  1. Из приветствия видно, что бы разблокировать нужно ввести
1
systemd-tty-ask-password-agent

После чего вас попросят ввести парольные фразы от ключей шифрования.

1
Please enter passphrase for disk cr_root:

Если у вас один ключ для шифрования всех разделов, то ввести будет достаточно всего один раз, утилита сначала попробует разблокировать все разделы первым ключом, если ключ будет другой то попросит парольную фразу от второго ключа.

  1. После разблокировки ssh сессия автоматически завершится а на удаленном ПК продолжится загрузка ОС.