разблокировка 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