Introducción
Guion imagen de instalación Hetzner Rescue System ofrece una forma sencilla de instalar varias distribuciones de Linux.
Este tutorial muestra cómo usar installimage para instalar un sistema Ubuntu 22.04 encriptado y agregar desbloqueo remoto a través de SSH (dropbear) en el initramfs almacenado en una partición separada. /bota espectáculos.
Requisitos previos
- Cuenta de Hetzner
- El servidor fue iniciado en el sistema de rescate.
- Clave pública SSH RSA, ECDSA o ED25519
- No hay redes privadas conectadas en Hetzner Cloud
Paso 1: Crear o copiar la clave pública SSH
Para desbloquear el sistema cifrado de forma remota, necesita una clave SSH. La usará más adelante para iniciar sesión en el sistema arrancado. El demonio SSH dropbear, incluido en Ubuntu 22.04, solo admite claves RSA y ECDSA. Si no dispone de una clave, deberá crear una. Recomendamos usar claves ED25519 o ECDSA.
Por ejemplo, para crear una clave SSH ED25519, ejecute:
ssh-keygen -t ed25519
Copie la clave pública al sistema de rescate, por ejemplo, utilizando scp:
scp ~/.ssh/id_ed25519.pub root@<your-host>:/tmp/authorized_keys
Paso 2: Crear o copiar el archivo de configuración de la imagen de instalación
Al invocar installimage sin opciones, se inicia en modo interactivo y abre un editor tras seleccionar una imagen de distribución. Al salir del editor, la instalación continúa y la configuración correspondiente se guarda como /installimage.conf en el sistema instalado. En este tutorial, pasaremos dicho archivo de configuración para la instalación directa.
Cree un archivo /tmp/setup.conf con el siguiente contenido o cópielo al servidor en el sistema de rescate.
Nota: Reemplace Secreto con una contraseña segura y ajuste el nombre de la unidad y la partición según sea necesario.
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_keysEsta configuración instala Ubuntu en una unidad (/dev/sda) con un /boot no cifrado separado que se requiere para el desbloqueo remoto.
Paso 3 – Crear o copiar el script posterior a la instalación
Para desbloquear la partición cifrada de forma remota, necesitamos instalar el servidor SSH dropbear y añadirlo al archivo initramfs almacenado en la partición /boot sin cifrar. Esto también incluye dhclient para la configuración de red, pero sin ningún otro cambio. Para habilitar la compatibilidad con Hetzner Cloud, necesitamos añadir un enlace que admita rutas RFC3442.
Para realizar estos pasos adicionales, necesitamos un script posterior a la instalación para installimage.
Cree un archivo /tmp/post-install.sh en el sistema de rescate con el siguiente contenido:
#!/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 -uImportante: Haga que el script sea ejecutable después de la instalación:
chmod +x /tmp/post-install.sh
Paso 4 – Iniciar la instalación
Antes de comenzar la instalación, verifique nuevamente el contenido de los siguientes archivos:
- /tmp/authorized_keys – Su clave SSH pública (RSA, ECDSA o ED25519)
- /tmp/setup.conf – configuración de la imagen de instalación
- /tmp/post-install.sh – es ejecutable y contiene el script posterior a la instalación.
Ahora está listo para iniciar la instalación con el siguiente comando:
installimage -a -c /tmp/setup.conf -x /tmp/post-install.sh
Espere a que se complete la instalación y verifique el archivo debug.txt para ver si hay errores.
Paso 5 – Arranque el sistema instalado
Una vez finalizada la instalación y resueltos los errores, puede reiniciar el servidor e iniciar el sistema recién instalado. Si tiene un KVM conectado o a través de una consola remota en una instancia en la nube, puede supervisar el proceso de arranque.
Después de un rato, el servidor debería responder al ping. Ahora, inicia sesión en dropbear por SSH y ejecuta cryptroot-unlock para desbloquear las particiones cifradas.
- Con clave ED25519 o ECDSA
ssh -p 2222 root@<your-host>
- Con clave RSA
En el caso de RSA, debemos especificar explícitamente que esta clave es aceptada.
ssh -o "PubkeyAcceptedKeyTypes +ssh-rsa" -p 2222 root@<your-host> -i ~/.ssh/id_rsa
Ejemplo:
$ 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:Si la contraseña es correcta, el arranque continuará y se desconectará automáticamente de la sesión SSH temporal.
Después de unos segundos, podrá iniciar sesión en su nuevo sistema.
Atención
Esta guía está escrita específicamente para Ubuntu 22.04. Es posible que no funcione en otras distribuciones.









