Einführung
Skript Installationsabbild Das Hetzner Rescue System bietet eine einfache Möglichkeit zur Installation verschiedener Linux-Distributionen.
Dieses Tutorial zeigt, wie man mit installimage ein verschlüsseltes Ubuntu 22.04-System installiert und die Remote-Entsperrung über SSH (dropbear) in der auf einer separaten Partition gespeicherten initramfs hinzufügt. /Stiefel Shows.
Voraussetzungen
- Hetzner-Konto
- Der Server wurde in das Rettungssystem hochgefahren.
- RSA-, ECDSA- oder ED25519-SSH-Schlüssel
- In der Hetzner Cloud sind keine privaten Netzwerke verbunden.
Schritt 1 – Erstellen oder kopieren Sie den öffentlichen SSH-Schlüssel
Um das verschlüsselte System aus der Ferne zu entsperren, benötigen Sie einen SSH-Schlüssel. Diesen Schlüssel verwenden Sie später, um sich am gestarteten System anzumelden. Der in Ubuntu 22.04 enthaltene Dropbear-SSH-Daemon unterstützt nur RSA- und ECDSA-Schlüssel. Falls Sie keinen solchen Schlüssel besitzen, müssen Sie einen erstellen. Wir empfehlen die Verwendung von ED25519- oder ECDSA-Schlüsseln.
Um beispielsweise einen SSH-Schlüssel ED25519 zu erstellen, führen Sie folgenden Befehl aus:
ssh-keygen -t ed25519
Kopieren Sie den öffentlichen Schlüssel in das Rettungssystem, z. B. mit scp:
scp ~/.ssh/id_ed25519.pub root@<your-host>:/tmp/authorized_keys
Schritt 2 – Erstellen oder kopieren Sie die Installationsabbild-Konfigurationsdatei
Wird `installimage` ohne Optionen aufgerufen, startet es im interaktiven Modus und öffnet nach Auswahl eines Installationsabbilds einen Editor. Nach dem Schließen des Editors wird die Installation fortgesetzt und die zugehörige Konfiguration als `/installimage.conf` auf dem Installationssystem gespeichert. In diesem Tutorial verwenden wir eine solche Konfigurationsdatei für die direkte Installation.
Erstellen Sie eine /tmp/setup.conf-Datei mit folgendem Inhalt oder kopieren Sie sie auf dem Rettungssystem auf den Server.
Hinweis: Ersetzen Sie „Geheimnis“ durch ein sicheres Passwort und passen Sie den Laufwerksnamen und die Partitionierung nach Bedarf an.
CRYPTPASSWORD secret
DRIVE1 /dev/sda
BOOTLOADER grub
HOSTNAME host.example.com
PART /boot/efi esp 256M
PART /boot ext4 1G
PART / ext4 all crypt
IMAGE /root/images/Ubuntu-2204-jammy-amd64-base.tar.gz
SSHKEYS_URL /tmp/authorized_keysDiese Konfiguration installiert Ubuntu auf einem Laufwerk (/dev/sda) mit einem separaten, unverschlüsselten /boot-Verzeichnis, das für die Fernentsperrung erforderlich ist.
Schritt 3 – Erstellen oder kopieren Sie das Nachinstallationsskript
Um die verschlüsselte Partition remote zu entsperren, muss der Dropbear-SSH-Server installiert und der initramfs-Datei der unverschlüsselten /boot-Partition hinzugefügt werden. Dadurch wird auch dhclient für die Netzwerkkonfiguration eingebunden, jedoch ohne weitere Funktionen. Für die Unterstützung von Hetzner Cloud ist ein Hook erforderlich, der RFC3442-Routen unterstützt.
Um diese zusätzlichen Schritte durchzuführen, benötigen wir ein Post-Installationsskript für installimage.
Erstellen Sie auf dem Rettungssystem eine Datei /tmp/post-install.sh mit folgendem Inhalt:
#!/bin/bash
add_rfc3442_hook() {
cat << EOF > /etc/initramfs-tools/hooks/add-rfc3442-dhclient-hook
#!/bin/sh
PREREQ=""
prereqs()
{
echo "\$PREREQ"
}
case \$1 in
prereqs)
prereqs
exit 0
;;
esac
if [ ! -x /sbin/dhclient ]; then
exit 0
fi
. /usr/share/initramfs-tools/scripts/functions
. /usr/share/initramfs-tools/hook-functions
mkdir -p \$DESTDIR/etc/dhcp/dhclient-exit-hooks.d/
cp -a /etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes \$DESTDIR/etc/dhcp/dhclient-exit-hooks.d/
EOF
chmod +x /etc/initramfs-tools/hooks/add-rfc3442-dhclient-hook
}
remove_unwanted_netplan_config() {
cat << EOF > /etc/initramfs-tools/scripts/init-bottom/remove_unwanted_netplan_config
#!/bin/sh
if [ -d "/run/netplan" ]; then
interface=\$(ls /run/netplan/ | cut -d'.' -f1)
if [ \${interface:+x} ]; then
rm -f /run/netplan/"\${interface}".yaml
fi
fi
EOF
chmod +x /etc/initramfs-tools/scripts/init-bottom/remove_unwanted_netplan_config
}
# Install rfc3442 hook
add_rfc3442_hook
# Adding an initramfs-tools script to remove /run/netplan/{interface}.yaml,
# because it is creating unwanted routes
remove_unwanted_netplan_config
# Update system
apt-get update >/dev/null
apt-get -y install cryptsetup-initramfs dropbear-initramfs
# Copy SSH keys for dropbear and change the port
cp /root/.ssh/authorized_keys /etc/dropbear/initramfs/
sed -ie 's/#DROPBEAR_OPTIONS=/DROPBEAR_OPTIONS="-I 600 -j -k -p 2222 -s"/' /etc/dropbear/initramfs/dropbear.conf
dpkg-reconfigure dropbear-initramfs
update-initramfs -uWichtig: Stellen Sie sicher, dass das Skript nach der Installation ausführbar ist:
chmod +x /tmp/post-install.sh
Schritt 4 – Starten Sie die Installation
Bevor Sie mit der Installation beginnen, überprüfen Sie bitte den Inhalt der folgenden Dateien:
- /tmp/authorized_keys – Ihr öffentlicher SSH-Schlüssel (RSA, ECDSA oder ED25519)
- /tmp/setup.conf – installimage config
- /tmp/post-install.sh – ist eine ausführbare Datei und enthält das Nachinstallationsskript.
Sie können die Installation nun mit folgendem Befehl starten:
installimage -a -c /tmp/setup.conf -x /tmp/post-install.sh
Warten Sie, bis die Installation abgeschlossen ist, und überprüfen Sie die Datei debug.txt auf Fehler.
Schritt 5 – Starten Sie das installierte System
Sobald die Installation abgeschlossen und alle Fehler behoben sind, können Sie einen Neustart durchführen, um den Server neu zu starten und das neu installierte System zu booten. Wenn Sie über einen KVM-Switch oder eine Remote-Konsole auf einer Cloud-Instanz verbunden sind, können Sie den Bootvorgang beobachten.
Nach kurzer Zeit sollte der Server auf den Ping antworten. Melden Sie sich nun per SSH bei Dropbear an und führen Sie `cryptroot-unlock` aus, um die verschlüsselte(n) Partition(en) zu entsperren.
- Mit Schlüssel ED25519 oder ECDSA
ssh -p 2222 root@<your-host>
- Mit RSA-Schlüssel
Im Falle von RSA muss explizit angegeben werden, dass dieser Schlüssel akzeptiert wird.
ssh -o "PubkeyAcceptedKeyTypes +ssh-rsa" -p 2222 root@<your-host> -i ~/.ssh/id_rsa
Beispiel:
$ ssh -o "PubkeyAcceptedKeyTypes +ssh-rsa" -p 2222 root@<your-host> -i ~/.ssh/id_rsa
BusyBox v1.30.1 (Ubuntu 1:1.30.1-7ubuntu3) built-in shell (ash)
Enter 'help' for a list of built-in commands.
# cryptroot-unlock
Please unlock disk luks-80e097ad-c0ab-47ce-9302-02dd316dc45c:Wenn das Passwort korrekt ist, wird der Bootvorgang fortgesetzt und Sie werden automatisch von der temporären SSH-Sitzung getrennt.
Nach wenigen Sekunden können Sie sich in Ihr neues System einloggen.
Aufmerksamkeit
Diese Anleitung ist ausdrücklich nur für Ubuntu 22.04 geschrieben. Sie funktioniert möglicherweise nicht auf anderen Distributionen.









