NoctisNode
← GuíasSeguridad2026-10-238 min

Desbloqueo remoto de LUKS por SSH: dropbear-initramfs y cryptroot-unlock

Desbloquea un root LUKS en un servidor remoto durante el arranque: instala dropbear-initramfs, añade tu clave, define puerto e IP, regenera el initramfs y luego entra por SSH y ejecuta cryptroot-unlock.

Respuesta corta: instala `dropbear-initramfs`, pon tu clave pública SSH en `/etc/dropbear/initramfs/authorized_keys` (Debian 12/13, Ubuntu 24.04), dale al initramfs una configuración de red, ejecuta `update-initramfs -u` y reinicia. Mientras el servidor espera la frase de paso, conéctate por SSH al pequeño servidor Dropbear en su propio puerto y ejecuta `cryptroot-unlock`; después el arranque continúa con normalidad.

Esta guía da por hecho que el sistema de archivos raíz ya está en LUKS, como se configura en la guía de root cifrado con LUKS, y que `/boot` no está cifrado, que es lo predeterminado en los instaladores de Debian y Ubuntu. Funciona en cualquier VPS KVM en el que controles el kernel y el initramfs, y es una buena base antes de poner en el disco servicios como los de un stack de self-hosting para un VPS pequeño.

Cómo funciona el desbloqueo remoto

En un sistema con root cifrado, el kernel carga primero un initramfs, un pequeño sistema de archivos raíz temporal guardado sin cifrar en `/boot`. Su tarea es encontrar el dispositivo LUKS, pedir la frase de paso, abrirlo y ceder el control al root real. Normalmente la solicitud solo aparece en la consola local.

`dropbear-initramfs` añade tres cosas a ese initramfs: el servidor SSH Dropbear, un paso de configuración de red y el asistente `cryptroot-unlock`. Dropbear arranca antes de la solicitud de la frase de paso, acepta solo inicios de sesión con clave pública de las claves que incluiste, y `cryptroot-unlock` reenvía tu frase de paso a la solicitud de `cryptsetup` que está esperando. Una vez abierto el root, el initramfs termina Dropbear y tu servidor OpenSSH real arranca como siempre.

Las rutas de archivo cambian entre versiones

El directorio de configuración cambió de sitio con la llegada de Dropbear 2022.83. Muchos tutoriales antiguos siguen mostrando la ruta vieja, y una clave puesta ahí se ignora sin avisar en las versiones actuales. Comprueba tu versión antes de copiar comandos.

Note · El archivo de opciones es `dropbear.conf` en el mismo directorio en todas las versiones. Las claves de host del initramfs también están ahí (`dropbear_ed25519_host_key` y similares) y son distintas de las claves de host de OpenSSH del sistema en ejecución.

VersiónDirectorio de configuraciónArchivo de claves
Debian 13 (trixie)`/etc/dropbear/initramfs/``/etc/dropbear/initramfs/authorized_keys`
Debian 12 (bookworm)`/etc/dropbear/initramfs/``/etc/dropbear/initramfs/authorized_keys`
Ubuntu 24.04 (noble)`/etc/dropbear/initramfs/``/etc/dropbear/initramfs/authorized_keys`
Debian 11, Ubuntu 22.04 y anteriores`/etc/dropbear-initramfs/``/etc/dropbear-initramfs/authorized_keys`

Configuración paso a paso en Debian 12/13 y Ubuntu 24.04

  1. 01.Instala el paquete: `apt install dropbear-initramfs`. En este punto es normal un aviso sobre un archivo `authorized_keys` ausente o no válido.
  2. 02.Añade tu clave pública, idealmente una clave Ed25519 dedicada, a `/etc/dropbear/initramfs/authorized_keys`, una clave por línea, y restríngela para que lo único que pueda hacer sea desbloquear.
  3. 03.Define las opciones de Dropbear en `/etc/dropbear/initramfs/dropbear.conf`, incluido un puerto no predeterminado para que la clave de host del initramfs no choque con tu clave de host SSH normal en `known_hosts`.
  4. 04.Configura la red del initramfs con el parámetro del kernel `ip=` (estática) o confía en DHCP si la red de tu VPS lo admite.
  5. 05.Regenera el initramfs con `update-initramfs -u` y, si cambiaste la línea de comandos del kernel, ejecuta `update-grub`.
  6. 06.Reinicia con acceso a la consola abierto como plan B, y luego conéctate y ejecuta `cryptroot-unlock`.
apt install dropbear-initramfs

# 1. Key (forced command: the key can only unlock)
echo 'no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="/bin/cryptroot-unlock" ssh-ed25519 AAAA...yourkey unlock@laptop' \
  > /etc/dropbear/initramfs/authorized_keys
chmod 600 /etc/dropbear/initramfs/authorized_keys

# 2. Options in /etc/dropbear/initramfs/dropbear.conf
#    -p 2222  listen on port 2222
#    -s       disable password logins
#    -j -k    no local/remote port forwarding
#    -I 300   drop idle sessions after 300 s
DROPBEAR_OPTIONS="-p 2222 -s -j -k -I 300"

# 3. Rebuild
update-initramfs -u

Configuración de red en el initramfs

El initramfs no lee `/etc/network/interfaces`, netplan ni systemd-networkd. Usa el parámetro del kernel `ip=` o la línea `IP=` de `/etc/initramfs-tools/initramfs.conf`. Si no hay ninguno, intenta DHCP en todas las interfaces, lo que funciona en muchas nubes pero no está garantizado en un VPS con asignación estática.

El formato es `ip=<client-ip>::<gateway-ip>:<netmask>:<hostname>:<device>:off`. Usa los valores de `ip -4 addr` e `ip route` del sistema en ejecución. El nombre de la interfaz dentro del initramfs suele ser el mismo nombre predecible (por ejemplo `ens3` o `eth0`); si no estás seguro, deja vacío el campo del dispositivo y se usará la primera interfaz. IPv4 es la opción fiable aquí, ya que el soporte de IPv6 en el paso de red del initramfs es limitado.

# /etc/default/grub (static IPv4 example, documentation addresses)
GRUB_CMDLINE_LINUX="ip=203.0.113.10::203.0.113.1:255.255.255.0::ens3:off"

update-grub
update-initramfs -u

# From your workstation after reboot:
ssh -p 2222 [email protected]
# without the forced command, type: cryptroot-unlock

Desbloqueo y uso diario

Tras un reinicio, espera a que el servidor responda en el puerto 2222 y conéctate como `root`. Con el comando forzado del paso de configuración, `cryptroot-unlock` arranca de inmediato y pide la frase de paso de LUKS; sin él, obtienes una shell de BusyBox y escribes tú mismo `cryptroot-unlock`. Si todo va bien, la sesión se cierra, el initramfs sigue arrancando y, un minuto después, tu servidor SSH habitual responde en el puerto 22, bastionado como en la guía de hardening de SSH.

Usa una entrada de `known_hosts` separada para el puerto de desbloqueo, por ejemplo un bloque `Host myserver-unlock` en `~/.ssh/config` con `Port 2222` y `HostKeyAlias myserver-unlock`. Cada vez que se actualiza el kernel, Debian y Ubuntu regeneran el initramfs y conservan tu clave y tus opciones de Dropbear, pero prueba un reinicio después de actualizaciones importantes.

  • ▹Conexión rechazada: la configuración de red es incorrecta; revisa los valores de `ip=` en la consola.
  • ▹Aviso de clave de host: estás llegando a la clave de host del initramfs con el alias normal; usa el alias separado.
  • ▹`cryptroot-unlock` dice que no hay dispositivos esperando: el sistema ya arrancó, o a `/etc/crypttab` le falta la entrada del root.
  • ▹Los cambios de clave no tienen efecto: editaste la ruta antigua `/etc/dropbear-initramfs/` u olvidaste `update-initramfs -u`.

Modelo de amenazas: qué protege y qué no el desbloqueo remoto

LUKS con desbloqueo remoto protege los datos en reposo. Un disco apagado, una imagen de disco copiada, una unidad retirada o un servidor incautado estando apagado solo revelan texto cifrado. Es una garantía real y útil para un VPS.

No protege un servidor en marcha de quien controla el host. El initramfs y el kernel de `/boot` no están cifrados, así que alguien con acceso al hipervisor o a la consola puede modificarlos para registrar tu frase de paso en el siguiente arranque, y la memoria de una VM en marcha, incluida la clave maestra de LUKS, puede leerse desde el host. Considera el desbloqueo remoto una protección frente a incautaciones y filtraciones de discos, no frente a un hipervisor hostil. Merece la pena investigar las anomalías al reiniciar, como una clave de host de Dropbear que ha cambiado.

Note · En un VPS de NoctisNode tienes root completo sobre KVM con las imágenes de Debian 13/12 y Ubuntu 24.04, así que esta configuración funciona tal como se describe. Aquí se aplica el mismo límite que en cualquier otro sitio: el cifrado protege el disco, no un sistema invitado en marcha. Consulta VPS sin logs explicado para ver qué registra y qué no el proveedor.

Preguntas frecuentes

Q¿Dónde está el archivo authorized_keys de dropbear-initramfs en Debian 12?

AEn Debian 12 y 13 y en Ubuntu 24.04 es `/etc/dropbear/initramfs/authorized_keys`. Debian 11 y Ubuntu 22.04 usaban `/etc/dropbear-initramfs/authorized_keys`. Ejecuta `update-initramfs -u` después de cualquier cambio.

Q¿Qué hace cryptroot-unlock?

A`cryptroot-unlock` es un asistente dentro del initramfs que localiza la solicitud de frase de paso de LUKS pendiente y le pasa la frase que escribes. En cuanto el dispositivo se abre, el arranque continúa y la sesión de Dropbear termina.

Q¿Cómo cambio el puerto SSH de dropbear-initramfs?

ADefine `DROPBEAR_OPTIONS="-p 2222"` (más cualquier otra opción) en `/etc/dropbear/initramfs/dropbear.conf`, ejecuta `update-initramfs -u` y reinicia.

Q¿Es seguro el desbloqueo remoto de LUKS por SSH en un VPS?

AProtege los datos de un disco apagado o copiado. No puede proteger frente a alguien con acceso al hipervisor, que podría alterar el initramfs sin cifrar o leer la memoria de la VM en marcha.

Q¿Puedo usar LUKS2 con dropbear-initramfs?

ASí. El desbloqueo ocurre en el espacio de usuario de Linux con `cryptsetup`, así que LUKS2 con Argon2id funciona; consulta LUKS2 frente a LUKS1 para ver las diferencias de formato.

Desbloqueo remoto de LUKS por SSH: dropbear-initramfs y cryptroot-unlock · NoctisNode