NoctisNode
← PoradnikiBezpieczeństwo2026-10-238 min

Zdalne odblokowanie LUKS przez SSH: dropbear-initramfs i cryptroot-unlock

Odblokuj zaszyfrowany LUKS root na zdalnym serwerze przy starcie: zainstaluj dropbear-initramfs, dodaj klucz, ustaw port i IP, przebuduj initramfs, a potem zaloguj się przez SSH i uruchom cryptroot-unlock.

Krótko: zainstaluj `dropbear-initramfs`, umieść swój publiczny klucz SSH w `/etc/dropbear/initramfs/authorized_keys` (Debian 12/13, Ubuntu 24.04), nadaj initramfs konfigurację sieci, uruchom `update-initramfs -u` i zrestartuj. Gdy serwer czeka na hasło, połącz się przez SSH z małym serwerem Dropbear na osobnym porcie i uruchom `cryptroot-unlock`; potem start przebiega normalnie.

Ten poradnik zakłada, że główny system plików jest już na LUKS, tak jak w poradniku o zaszyfrowanym root z LUKS, a `/boot` jest niezaszyfrowany, co jest domyślnym ustawieniem instalatorów Debiana i Ubuntu. Działa na każdym VPS KVM, na którym kontrolujesz jądro i initramfs, i jest rozsądną podstawą, zanim umieścisz na dysku usługi takie jak w stosie self-hosting na małym VPS.

Jak działa zdalne odblokowanie

W systemie z zaszyfrowanym rootem jądro najpierw ładuje initramfs — mały tymczasowy główny system plików przechowywany bez szyfrowania w `/boot`. Jego zadaniem jest znaleźć urządzenie LUKS, zapytać o hasło, otworzyć je i przekazać sterowanie prawdziwemu rootowi. Normalnie monit pojawia się tylko na lokalnej konsoli.

`dropbear-initramfs` dodaje do tego initramfs trzy rzeczy: serwer SSH Dropbear, krok konfiguracji sieci i pomocnika `cryptroot-unlock`. Dropbear startuje przed monitem o hasło, przyjmuje wyłącznie logowania kluczem publicznym z wbudowanych kluczy, a `cryptroot-unlock` przekazuje Twoje hasło do czekającego monitu `cryptsetup`. Po otwarciu roota initramfs zabija Dropbear, a Twój właściwy serwer OpenSSH startuje jak zwykle.

Ścieżki plików różnią się między wersjami

Katalog konfiguracji zmienił położenie wraz z Dropbear 2022.83. Wiele starszych poradników wciąż pokazuje starą ścieżkę, a klucz umieszczony tam jest w obecnych wydaniach po cichu ignorowany. Sprawdź swoje wydanie, zanim skopiujesz polecenia.

Note · Plik opcji to `dropbear.conf` w tym samym katalogu w każdym wydaniu. Tam też znajdują się klucze hosta initramfs (`dropbear_ed25519_host_key` i pokrewne), oddzielne od kluczy hosta OpenSSH działającego systemu.

WydanieKatalog konfiguracjiPlik kluczy
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 i starsze`/etc/dropbear-initramfs/``/etc/dropbear-initramfs/authorized_keys`

Konfiguracja krok po kroku na Debian 12/13 i Ubuntu 24.04

  1. 01.Zainstaluj pakiet: `apt install dropbear-initramfs`. Ostrzeżenie o brakującym lub nieprawidłowym pliku `authorized_keys` na tym etapie jest normalne.
  2. 02.Dodaj swój klucz publiczny, najlepiej dedykowany klucz Ed25519, do `/etc/dropbear/initramfs/authorized_keys`, po jednym kluczu w linii, i ogranicz go tak, by mógł służyć wyłącznie do odblokowania.
  3. 03.Ustaw opcje Dropbear w `/etc/dropbear/initramfs/dropbear.conf`, w tym niestandardowy port, aby klucz hosta initramfs nie kolidował z Twoim zwykłym kluczem hosta SSH w `known_hosts`.
  4. 04.Skonfiguruj sieć dla initramfs parametrem jądra `ip=` (statycznie) lub polegaj na DHCP, jeśli sieć Twojego VPS go obsługuje.
  5. 05.Przebuduj initramfs przez `update-initramfs -u`, a jeśli zmieniłeś linię poleceń jądra, uruchom `update-grub`.
  6. 06.Zrestartuj z otwartym dostępem do konsoli jako zabezpieczeniem, a potem połącz się i uruchom `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

Konfiguracja sieci w initramfs

Initramfs nie czyta `/etc/network/interfaces`, netplan ani systemd-networkd. Używa parametru jądra `ip=` lub linii `IP=` w `/etc/initramfs-tools/initramfs.conf`. Gdy żadne z nich nie jest ustawione, próbuje DHCP na wszystkich interfejsach, co działa w wielu chmurach, ale nie jest gwarantowane na VPS ze statycznym przydziałem.

Format to `ip=<client-ip>::<gateway-ip>:<netmask>:<hostname>:<device>:off`. Użyj wartości z `ip -4 addr` i `ip route` w działającym systemie. Nazwa interfejsu wewnątrz initramfs to zwykle ta sama przewidywalna nazwa (na przykład `ens3` lub `eth0`); jeśli nie masz pewności, zostaw pole urządzenia puste, a użyty zostanie pierwszy interfejs. IPv4 jest tu niezawodnym wyborem, bo obsługa IPv6 w kroku sieciowym initramfs jest ograniczona.

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

Odblokowanie i codzienne użytkowanie

Po restarcie poczekaj, aż serwer zacznie odpowiadać na porcie 2222, a następnie połącz się jako `root`. Z wymuszonym poleceniem z kroku konfiguracji `cryptroot-unlock` startuje od razu i pyta o hasło LUKS; bez niego dostajesz powłokę BusyBox i sam wpisujesz `cryptroot-unlock`. Po powodzeniu sesja się zamyka, initramfs kontynuuje start, a minutę później Twój zwykły serwer SSH odpowiada na porcie 22, zabezpieczony jak w poradniku o hardeningu SSH.

Użyj osobnego wpisu `known_hosts` dla portu odblokowania, na przykład bloku `Host myserver-unlock` w `~/.ssh/config` z `Port 2222` i `HostKeyAlias myserver-unlock`. Przy każdej aktualizacji jądra Debian i Ubuntu regenerują initramfs i zachowują Twój klucz oraz opcje Dropbear, ale po większych aktualizacjach przetestuj jeden restart.

  • ▹Connection refused: konfiguracja sieci jest błędna; sprawdź wartości `ip=` na konsoli.
  • ▹Ostrzeżenie o kluczu hosta: trafiasz na klucz hosta initramfs pod zwykłym aliasem; użyj osobnego aliasu.
  • ▹`cryptroot-unlock` mówi, że żadne urządzenie nie czeka: system już wystartował albo `/etc/crypttab` nie ma wpisu dla roota.
  • ▹Zmiany klucza nie działają: edytowałeś starą ścieżkę `/etc/dropbear-initramfs/` lub zapomniałeś o `update-initramfs -u`.

Model zagrożeń: przed czym zdalne odblokowanie chroni, a przed czym nie

LUKS ze zdalnym odblokowaniem chroni dane w spoczynku. Wyłączony dysk, skopiowany obraz dysku, wycofany z użytku nośnik czy serwer zajęty w stanie wyłączonym ujawniają tylko szyfrogram. To realna i użyteczna gwarancja dla VPS.

Nie chroni natomiast działającego serwera przed tym, kto kontroluje hosta. Initramfs i jądro w `/boot` są niezaszyfrowane, więc ktoś z dostępem do hiperwizora lub konsoli może je zmodyfikować tak, by przy następnym starcie zapisały Twoje hasło, a pamięć działającej VM, łącznie z kluczem głównym LUKS, da się odczytać z hosta. Traktuj zdalne odblokowanie jako ochronę przed zajęciem sprzętu i wyciekiem dysków, a nie przed wrogim hiperwizorem. Anomalie przy restarcie, takie jak zmieniony klucz hosta Dropbear, warto zbadać.

Note · Na VPS NoctisNode dostajesz pełny root na KVM z obrazami Debian 13/12 i Ubuntu 24.04, więc ta konfiguracja działa zgodnie z opisem. Obowiązuje tu to samo ograniczenie co wszędzie: szyfrowanie chroni dysk, a nie działającego gościa. Co strona dostawcy rejestruje, a czego nie, opisuje artykuł VPS bez logów — wyjaśnienie.

FAQ

QGdzie jest plik authorized_keys dla dropbear initramfs w Debianie 12?

AW Debianie 12 i 13 oraz w Ubuntu 24.04 jest to `/etc/dropbear/initramfs/authorized_keys`. Debian 11 i Ubuntu 22.04 używały `/etc/dropbear-initramfs/authorized_keys`. Po każdej zmianie uruchom `update-initramfs -u`.

QCo robi cryptroot-unlock?

A`cryptroot-unlock` to pomocnik wewnątrz initramfs, który znajduje oczekujący monit o hasło LUKS i przekazuje mu wpisane przez Ciebie hasło. Gdy urządzenie się otworzy, start trwa dalej, a sesja Dropbear się kończy.

QJak zmienić port SSH dla dropbear-initramfs?

AUstaw `DROPBEAR_OPTIONS="-p 2222"` (plus inne flagi) w `/etc/dropbear/initramfs/dropbear.conf`, następnie uruchom `update-initramfs -u` i zrestartuj.

QCzy zdalne odblokowanie LUKS przez SSH jest bezpieczne na VPS?

AChroni dane na wyłączonym lub skopiowanym dysku. Nie chroni przed kimś z dostępem do hiperwizora, kto mógłby zmienić niezaszyfrowany initramfs lub odczytać pamięć działającej VM.

QCzy mogę używać LUKS2 z dropbear-initramfs?

ATak. Odblokowanie odbywa się w przestrzeni użytkownika Linuksa przez `cryptsetup`, więc LUKS2 z Argon2id działa; różnice formatów opisuje LUKS2 vs LUKS1.

Zdalne odblokowanie LUKS przez SSH: dropbear-initramfs i cryptroot-unlock · NoctisNode