rootfs über ssh login in initramfs entsperren
Sie können Ihre rootfs beim Booten von Remote aus entsperren, indem Sie ssh verwenden, um sich beim Boot-System anzumelden, während es mit eingebundenem initramfs ausgeführt wird.
Konfiguration
Damit die Remote-Entsperrung funktioniert, müssen die folgenden Pakete installiert sein, bevor das initramfs erstellt wird: dropbear
busybox
Die Datei /etc/initramfs-tools/initramfs.conf
enthält die Konfigurationsoptionen, die beim Erstellen des initramfs verwendet werden. Es sollte enthalten BUSYBOX=y
(dies ist die Standardeinstellung, wenn das busybox-Paket installiert wird), damit busybox in initramfs installiert wird, und sollte nicht enthalten
DROPBEAR=n
, was die Installation von dropbear in initramfs deaktivieren würde. Wenn diese DROPBEAR=y
Option aktiviert ist, wird Dropbear in jedem Fall installiert. Ist dies
DROPBEAR
nicht der Fall, wird dropbear nur bei einem vorhandenen Cryptroot-Setup installiert.
Die für die initramfs verwendeten Hostschlüssel sind dropbear_dss_host_key
und
dropbear_rsa_host_key
, beide befinden sich in /etc/initramfs-tools/etc/dropbear/
. Wenn sie beim Kompilieren des initramfs nicht vorhanden sind, werden sie automatisch erstellt. Es folgen die Befehle, um sie manuell zu erstellen:
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
Da die initramfs nicht verschlüsselt werden, wird von einer öffentlichen Authentifizierung ausgegangen. Die dafür verwendeten Schlüssel werden entnommen
/etc/initramfs-tools/root/.ssh/authorized_keys
. Wenn diese Datei beim Kompilieren des initramfs nicht vorhanden ist, wird sie erstellt und
/etc/initramfs-tools/root/.ssh/id_rsa.pub
hinzugefügt. Existiert auch die letztere Datei nicht, wird sie automatisch generiert - Sie finden den passenden privaten Schlüssel, unter dem Sie sich später bei initramfs anmelden müssen /etc/initramfs-tools/root/.ssh/id_rsa
(oder id_rsa.dropbear
falls Sie ihn im dropbear-Format benötigen). Es folgen die Befehle, um die entsprechenden Schritte manuell auszuführen:
So erstellen Sie einen Schlüssel (im Dropbear-Format):
dropbearkey -t rsa -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear
So konvertieren Sie den Schlüssel vom Dropbear-Format in das Openssh-Format:
/usr/lib/dropbear/dropbearconvert dropbear openssh \
/etc/initramfs-tools/root/.ssh/id_rsa.dropbear \
/etc/initramfs-tools/root/.ssh/id_rsa
So extrahieren Sie den öffentlichen Schlüssel:
dropbearkey -y -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear | \
grep "^ssh-rsa " > /etc/initramfs-tools/root/.ssh/id_rsa.pub
So fügen Sie den öffentlichen Schlüssel der Datei authorized_keys hinzu:
cat /etc/initramfs-tools/root/.ssh/id_rsa.pub >> /etc/initramfs-tools/root/.ssh/authorized_keys
Falls Sie einige Schnittstelle mit DHCP konfiguriert werden, Einstellung
DEVICE=
in /etc/initramfs-tools/initramfs.conf
sollte ausreichend sein. Das initramfs sollte auch den ip=
Kernel-Parameter berücksichtigen. Wenn Sie grub verwenden, möchten Sie es möglicherweise /boot/grub/menu.lst
entweder in der # kopt=
Zeile oder an bestimmte kernel
Zeilen anhängen. Der ip=
Kernel-Parameter ist im Kernel-Quellbaum dokumentiert Documentation/nfsroot.txt
.
Probleme
Vergiss nicht zu starten, update-initramfs
wenn du die Konfiguration geändert hast, damit sie wirksam wird!
Es scheint manchmal ein Problem zu sein, genügend Entropie für den ssh-Daemon zu sammeln. Der Start des ssh-Daemons kann verzögert werden, bis genügend Entropie abgerufen wurde. Dies ist für den Startvorgang nicht blockierend. Wenn Sie sich also an der Konsole befinden, müssen Sie nicht auf den Abschluss des Startvorgangs von sshd warten.
Entsperrvorgang
Zum Entsperren von der Fernbedienung aus können Sie Folgendes tun:
ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \
-i "~/id_rsa.initramfs" root@initramfshost.example.com \
"echo -ne \"secret\" >/lib/cryptsetup/passfifo"
In diesem Beispiel wird davon ausgegangen, dass Sie eine zusätzliche known_hosts
" ~/.ssh/known_hosts.initramfs
" Datei haben, die den Host-Schlüssel des Cryptroot-Systems enthält, dass Sie eine " ~/id_rsa.initramfs
" Datei haben , die den Authorized-Key für das Cryptroot-System enthält, und dass der Name des Cryptroot-Systems " initramfshost.example.com
" lautet Passphrase für Kryptowurzel lautet " secret
"
- < debian@x.ray.net
>, Mittwoch, 30. September 2009
zless /usr/share/doc/cryptsetup/README.remote.gz