odblokowywanie rootfs poprzez logowanie ssh w initramfs
Możesz odblokować rootfs podczas uruchamiania ze zdalnego, używając ssh do zalogowania się do systemu rozruchowego, gdy jest uruchomiony z zamontowanym initramfs.
Ustawiać
Aby zdalne odblokowanie działało, przed zbudowaniem initramfs należy zainstalować następujące pakiety: dropbear
busybox
Plik /etc/initramfs-tools/initramfs.conf
zawiera opcje konfiguracji używane podczas budowania initramfs. Powinien zawierać BUSYBOX=y
(jest ustawiony jako domyślny po zainstalowaniu pakietu busybox), aby mieć busybox zainstalowany w initramfs i nie powinien zawierać
DROPBEAR=n
, co uniemożliwiłoby instalację dropbeara w initramfs. Jeśli ustawione na DROPBEAR=y
, dropbear zostanie zainstalowany w każdym przypadku; jeśli
DROPBEAR
w ogóle nie jest ustawiony, to dropbear zostanie zainstalowany tylko w przypadku istniejącej konfiguracji cryptroot.
Klucze hosta używane dla initramfs znajdują się dropbear_dss_host_key
i
dropbear_rsa_host_key
oba znajdują się w /etc/initramfs-tools/etc/dropbear/
. Jeśli nie istnieją podczas kompilacji initramfs, zostaną utworzone automatycznie. Poniżej znajdują się polecenia, aby utworzyć je ręcznie:
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
Ponieważ initramfs nie będą szyfrowane, zakłada się uwierzytelnianie publickey. Klucz (y) użyte do tego zostaną pobrane
/etc/initramfs-tools/root/.ssh/authorized_keys
. Jeśli ten plik nie istnieje podczas kompilacji initramfs, zostanie utworzony i
/etc/initramfs-tools/root/.ssh/id_rsa.pub
zostanie do niego dodany. Jeśli ten drugi plik również nie istnieje, zostanie wygenerowany automatycznie - znajdziesz pasujący klucz prywatny, który później będziesz musiał zalogować się do initramfs pod /etc/initramfs-tools/root/.ssh/id_rsa
(lub id_rsa.dropbear
w razie potrzeby w formacie dropbear). Poniżej znajdują się polecenia ręcznego wykonania odpowiednich kroków:
Aby utworzyć klucz (w formacie dropbear):
dropbearkey -t rsa -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear
Aby przekonwertować klucz z formatu dropbear na format openssh:
/usr/lib/dropbear/dropbearconvert dropbear openssh \
/etc/initramfs-tools/root/.ssh/id_rsa.dropbear \
/etc/initramfs-tools/root/.ssh/id_rsa
Aby wyodrębnić klucz publiczny:
dropbearkey -y -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear | \
grep "^ssh-rsa " > /etc/initramfs-tools/root/.ssh/id_rsa.pub
Aby dodać klucz publiczny do pliku autoryzowanych_kluczy:
cat /etc/initramfs-tools/root/.ssh/id_rsa.pub >> /etc/initramfs-tools/root/.ssh/authorized_keys
W przypadku, gdy chcesz, aby jakiś interfejs skonfigurowany przy użyciu DHCP, ustawienie
DEVICE=
w /etc/initramfs-tools/initramfs.conf
powinno być wystarczające. Initramfs powinien również honorować ip=
parametr jądra. Jeśli używasz gruba, prawdopodobnie możesz chcieć go ustawić /boot/grub/menu.lst
, albo w linii „ # kopt=
”, albo dołączony do określonej kernel
linii ”. ip=
Parametr jądra jest udokumentowany Documentation/nfsroot.txt
w drzewie źródłowym jądra.
Zagadnienia
Nie zapomnij uruchomić update-initramfs
po zmianie konfiguracji, aby była skuteczna!
Wydaje się, że zbieranie wystarczającej ilości entropii dla demona ssh wydaje się być problemem. Uruchomienie demona ssh może być opóźnione do momentu odzyskania wystarczającej ilości entropii. Nie blokuje to procesu uruchamiania, więc kiedy jesteś przy konsoli, nie będziesz musiał czekać na sshd, aby zakończyć jego uruchamianie.
Procedura odblokowania
Aby odblokować zdalnie, możesz zrobić coś takiego:
ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \
-i "~/id_rsa.initramfs" root@initramfshost.example.com \
"echo -ne \"secret\" >/lib/cryptsetup/passfifo"
W tym przykładzie założono, że masz dodatkowy known_hosts
plik „ ~/.ssh/known_hosts.initramfs
”, który zawiera klucz hosta systemu kryptograficznego, że masz plik „ ~/id_rsa.initramfs
”, który zawiera klucz autoryzowany dla systemu kryptograficznego, że nazwa systemu kryptograficznego to „ initramfshost.example.com
”, i że hasło cryptroot to „ secret
”
- < debian@x.ray.net
>, śr., 30 września 2009 r
zless /usr/share/doc/cryptsetup/README.remote.gz