NoctisNode
← GuideSicurezza2026-10-238 min

Sblocco remoto LUKS via SSH: dropbear-initramfs e cryptroot-unlock

Sblocca all'avvio una root LUKS su un server remoto: installa dropbear-initramfs, aggiungi la tua chiave, imposta porta e IP, ricostruisci l'initramfs, poi entra via SSH ed esegui cryptroot-unlock.

In breve: installa `dropbear-initramfs`, metti la tua chiave pubblica SSH in `/etc/dropbear/initramfs/authorized_keys` (Debian 12/13, Ubuntu 24.04), fornisci all'initramfs una configurazione di rete, esegui `update-initramfs -u` e riavvia. Mentre il server attende la passphrase, connettiti via SSH al piccolo server Dropbear sulla sua porta dedicata ed esegui `cryptroot-unlock`; a quel punto l'avvio prosegue normalmente.

Questa guida presuppone che il filesystem root sia già su LUKS, come configurato nella guida al root cifrato con LUKS, e che `/boot` non sia cifrato, che è l'impostazione predefinita degli installer di Debian e Ubuntu. Funziona su qualsiasi VPS KVM in cui controlli kernel e initramfs, ed è una base sensata prima di mettere sul disco servizi come quelli di uno stack self-hosting per VPS piccoli.

Come funziona lo sblocco remoto

Su un sistema con root cifrata il kernel carica prima un initramfs, un piccolo filesystem root temporaneo salvato in chiaro in `/boot`. Il suo compito è trovare il dispositivo LUKS, chiedere la passphrase, aprirlo e passare il controllo alla root vera. Normalmente il prompt compare solo sulla console locale.

`dropbear-initramfs` aggiunge tre cose a quell'initramfs: il server SSH Dropbear, un passaggio di configurazione della rete e l'helper `cryptroot-unlock`. Dropbear parte prima del prompt della passphrase, accetta solo login a chiave pubblica con le chiavi che hai incluso, e `cryptroot-unlock` inoltra la tua passphrase al prompt di `cryptsetup` in attesa. Una volta aperta la root, l'initramfs termina Dropbear e il tuo vero server OpenSSH si avvia come al solito.

I percorsi dei file cambiano tra le versioni

La directory di configurazione è stata spostata con l'arrivo di Dropbear 2022.83. Molti tutorial vecchi mostrano ancora il percorso precedente, e una chiave messa lì viene ignorata senza avvisi nelle release attuali. Controlla la tua release prima di copiare i comandi.

Note · Il file delle opzioni è `dropbear.conf`, nella stessa directory, su tutte le release. Lì si trovano anche le host key dell'initramfs (`dropbear_ed25519_host_key` e simili), separate dalle host key OpenSSH del sistema in esecuzione.

ReleaseDirectory di configurazioneFile delle chiavi
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 e precedenti`/etc/dropbear-initramfs/``/etc/dropbear-initramfs/authorized_keys`

Configurazione passo per passo su Debian 12/13 e Ubuntu 24.04

  1. 01.Installa il pacchetto: `apt install dropbear-initramfs`. A questo punto è normale un avviso su un file `authorized_keys` mancante o non valido.
  2. 02.Aggiungi la tua chiave pubblica, idealmente una chiave Ed25519 dedicata, a `/etc/dropbear/initramfs/authorized_keys`, una chiave per riga, e limitala in modo che possa solo sbloccare.
  3. 03.Imposta le opzioni di Dropbear in `/etc/dropbear/initramfs/dropbear.conf`, compresa una porta non standard così che la host key dell'initramfs non entri in conflitto con la tua normale host key SSH in `known_hosts`.
  4. 04.Configura la rete per l'initramfs con il parametro del kernel `ip=` (statico) oppure affidati al DHCP se la rete del tuo VPS lo supporta.
  5. 05.Ricostruisci l'initramfs con `update-initramfs -u` e, se hai modificato la riga di comando del kernel, esegui `update-grub`.
  6. 06.Riavvia tenendo aperto l'accesso alla console come piano B, poi connettiti ed esegui `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

Configurazione di rete nell'initramfs

L'initramfs non legge `/etc/network/interfaces`, netplan o systemd-networkd. Usa il parametro del kernel `ip=`, oppure la riga `IP=` in `/etc/initramfs-tools/initramfs.conf`. Se nessuno dei due è impostato, prova il DHCP su tutte le interfacce, il che funziona su molti cloud ma non è garantito su un VPS con assegnazione statica.

Il formato è `ip=<client-ip>::<gateway-ip>:<netmask>:<hostname>:<device>:off`. Usa i valori di `ip -4 addr` e `ip route` sul sistema in esecuzione. Il nome dell'interfaccia dentro l'initramfs di solito è lo stesso nome predicibile (per esempio `ens3` o `eth0`); se non sei sicuro, lascia vuoto il campo del dispositivo e verrà usata la prima interfaccia. Qui IPv4 è la scelta affidabile, perché il supporto IPv6 nel passaggio di rete dell'initramfs è limitato.

# /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

Sblocco e uso quotidiano

Dopo un riavvio, aspetta che il server risponda sulla porta 2222, poi connettiti come `root`. Con il comando forzato del passaggio di configurazione, `cryptroot-unlock` parte subito e chiede la passphrase LUKS; senza, ottieni una shell BusyBox e digiti tu `cryptroot-unlock`. Se va a buon fine la sessione si chiude, l'initramfs continua l'avvio e un minuto dopo il tuo normale server SSH risponde sulla porta 22, protetto come nella guida all'hardening SSH.

Usa una voce `known_hosts` separata per la porta di sblocco, per esempio un blocco `Host myserver-unlock` in `~/.ssh/config` con `Port 2222` e `HostKeyAlias myserver-unlock`. A ogni aggiornamento del kernel, Debian e Ubuntu rigenerano l'initramfs mantenendo la chiave e le opzioni di Dropbear, ma prova un riavvio dopo gli aggiornamenti importanti.

  • ▹Connection refused: la configurazione di rete è sbagliata; controlla i valori di `ip=` dalla console.
  • ▹Avviso sulla host key: stai incontrando la host key dell'initramfs sotto l'alias normale; usa l'alias separato.
  • ▹`cryptroot-unlock` dice che nessun dispositivo è in attesa: il sistema si è già avviato, oppure in `/etc/crypttab` manca la voce della root.
  • ▹Le modifiche alla chiave non hanno effetto: hai modificato il vecchio percorso `/etc/dropbear-initramfs/` o hai dimenticato `update-initramfs -u`.

Threat model: cosa protegge e cosa non protegge lo sblocco remoto

LUKS con sblocco remoto protegge i dati a riposo. Un disco spento, un'immagine del disco copiata, un'unità dismessa o un server sequestrato mentre è spento rivelano solo testo cifrato. Per un VPS è una garanzia reale e utile.

Non protegge un server in esecuzione da chi controlla l'host. L'initramfs e il kernel in `/boot` non sono cifrati, quindi chi ha accesso all'hypervisor o alla console può modificarli per registrare la tua passphrase al prossimo avvio, e la memoria di una VM in esecuzione, compresa la master key LUKS, può essere letta dall'host. Considera lo sblocco remoto una protezione contro sequestri e fughe di dischi, non contro un hypervisor ostile. Vale la pena indagare sulle anomalie al riavvio, come una host key di Dropbear cambiata.

Note · Su un VPS NoctisNode hai root completo su KVM con le immagini Debian 13/12 e Ubuntu 24.04, quindi questa configurazione funziona come descritto. Qui vale lo stesso limite di ovunque: la cifratura protegge il disco, non un guest in esecuzione. Vedi il VPS no-logs spiegato per cosa registra e cosa non registra il provider.

FAQ

QDove si trova il file authorized_keys di dropbear initramfs su Debian 12?

ASu Debian 12 e 13 e su Ubuntu 24.04 è `/etc/dropbear/initramfs/authorized_keys`. Debian 11 e Ubuntu 22.04 usavano `/etc/dropbear-initramfs/authorized_keys`. Esegui `update-initramfs -u` dopo ogni modifica.

QCosa fa cryptroot-unlock?

A`cryptroot-unlock` è un helper dentro l'initramfs che trova il prompt della passphrase LUKS in attesa e gli passa la passphrase che digiti. Una volta aperto il dispositivo, l'avvio prosegue e la sessione Dropbear termina.

QCome cambio la porta SSH di dropbear-initramfs?

AImposta `DROPBEAR_OPTIONS="-p 2222"` (più eventuali altri flag) in `/etc/dropbear/initramfs/dropbear.conf`, poi esegui `update-initramfs -u` e riavvia.

QLo sblocco remoto LUKS via SSH è sicuro su un VPS?

AProtegge i dati su un disco spento o copiato. Non può proteggere da chi ha accesso all'hypervisor, che potrebbe alterare l'initramfs non cifrato o leggere la memoria della VM in esecuzione.

QPosso usare LUKS2 con dropbear-initramfs?

ASì. Lo sblocco avviene nello userspace Linux con `cryptsetup`, quindi LUKS2 con Argon2id funziona; vedi LUKS2 vs LUKS1 per le differenze tra i formati.

Sblocco remoto LUKS via SSH: dropbear-initramfs e cryptroot-unlock · NoctisNode