разблокировка rootfs через логин ssh в initramfs
Вы можете разблокировать свои rootfs при загрузке с удаленного компьютера, используя ssh для входа в систему загрузки, пока она работает с подключенным initramfs.
Настроить
Чтобы удаленная разблокировка работала, перед сборкой initramfs необходимо установить следующие пакеты: dropbear busybox
Файл /etc/initramfs-tools/initramfs.confсодержит параметры конфигурации, используемые при сборке initramfs. Он должен содержать BUSYBOX=y
(это устанавливается по умолчанию при установке пакета busybox) для установки busybox в initramfs и не должен содержать
DROPBEAR=n, что отключило бы установку dropbear для initramfs. Если установлено DROPBEAR=y, dropbear будет установлен в любом случае; если
DROPBEARне установлен вообще, dropbear будет установлен только в случае существующей настройки cryptroot.
Ключи хоста, используемые для initramfs, находятся dropbear_dss_host_keyи
dropbear_rsa_host_keyв /etc/initramfs-tools/etc/dropbear/. Если они не существуют при компиляции initramfs, они будут созданы автоматически. Ниже приведены команды для их создания вручную:
dropbearkey -t dss -f /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
dropbearkey -t rsa -f /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
Поскольку initramfs не будет зашифрован, предполагается аутентификация с помощью открытого ключа. Ключ (ы), используемые для этого, будут взяты из
/etc/initramfs-tools/root/.ssh/authorized_keys. Если этот файл не существует при компиляции initramfs, он будет создан и
/etc/initramfs-tools/root/.ssh/id_rsa.pubдобавлен в него. Если последний файл также не существует, он будет сгенерирован автоматически - вы найдете соответствующий закрытый ключ, который вам позже понадобится для входа в initramfs /etc/initramfs-tools/root/.ssh/id_rsa
(или, id_rsa.dropbearв случае необходимости, в формате dropbear). Ниже приведены команды для выполнения соответствующих шагов вручную:
Чтобы создать ключ (в формате dropbear):
dropbearkey -t rsa -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear
Чтобы преобразовать ключ из формата dropbear в формат openssh:
/usr/lib/dropbear/dropbearconvert dropbear openssh \
/etc/initramfs-tools/root/.ssh/id_rsa.dropbear \
/etc/initramfs-tools/root/.ssh/id_rsa
Чтобы извлечь открытый ключ:
dropbearkey -y -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear | \
grep "^ssh-rsa " > /etc/initramfs-tools/root/.ssh/id_rsa.pub
Чтобы добавить открытый ключ в файл author_keys:
cat /etc/initramfs-tools/root/.ssh/id_rsa.pub >> /etc/initramfs-tools/root/.ssh/authorized_keys
В случае , если вы хотите , чтобы некоторые интерфейсы , чтобы настроить с помощью DHCP, установив
DEVICE=в /etc/initramfs-tools/initramfs.confдолжен быть достаточно. Initramfs также должен учитывать ip=параметр ядра. В случае, если вы используете grub, вы, возможно, захотите установить его /boot/grub/menu.lstлибо в # kopt=строке ' ', либо в добавленной к определенной kernelстроке ' '. Параметр ip=ядра задокументирован Documentation/nfsroot.txtв исходном дереве ядра.
вопросы
Не забудьте запустить, update-initramfsкогда вы изменили конфигурацию, чтобы сделать ее эффективной!
Сбор достаточной энтропии для демона ssh иногда кажется проблемой. Запуск демона ssh может быть отложен до тех пор, пока не будет получено достаточно энтропии. Это не блокирует процесс запуска, поэтому, когда вы находитесь за консолью, вам не придется ждать, пока sshd завершит свой запуск.
Процедура разблокировки
Чтобы разблокировать с пульта, вы можете сделать что-то вроде этого:
ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \
-i "~/id_rsa.initramfs" root@initramfshost.example.com \
"echo -ne \"secret\" >/lib/cryptsetup/passfifo"
В этом примере предполагается, что у вас есть дополнительный known_hostsфайл " ~/.ssh/known_hosts.initramfs", который содержит ключ хоста системы cryptroot, что у вас есть файл " ~/id_rsa.initramfs", который содержит авторизованный ключ для системы cryptroot, что имя системы cryptroot равно " initramfshost.example.com", и что Криптозная фраза " secret"
- < debian@x.ray.net>, ср., 30 сентября 2009 г.
zless /usr/share/doc/cryptsetup/README.remote.gz