Membuka LUKS dari jarak jauh lewat SSH: dropbear-initramfs dan cryptroot-unlock
Buka root LUKS di server jarak jauh saat boot: pasang dropbear-initramfs, tambahkan kunci Anda, atur port dan IP, build ulang initramfs, lalu SSH masuk dan jalankan cryptroot-unlock.
Singkatnya: pasang `dropbear-initramfs`, taruh kunci publik SSH Anda di `/etc/dropbear/initramfs/authorized_keys` (Debian 12/13, Ubuntu 24.04), beri initramfs konfigurasi jaringan, jalankan `update-initramfs -u`, lalu reboot. Saat server menunggu passphrase, SSH ke server Dropbear kecil di port tersendiri dan jalankan `cryptroot-unlock`; boot kemudian berlanjut seperti biasa.
Panduan ini mengasumsikan filesystem root sudah berada di LUKS, seperti disiapkan di panduan root terenkripsi LUKS, dan `/boot` tidak terenkripsi, yang merupakan default installer Debian dan Ubuntu. Cara ini bekerja di VPS KVM mana pun tempat Anda mengendalikan kernel dan initramfs, dan menjadi fondasi yang masuk akal sebelum Anda menaruh layanan seperti di stack self-hosting untuk VPS kecil di disk.
Cara kerja remote unlock
Pada sistem dengan root terenkripsi, kernel pertama-tama memuat initramfs, yaitu filesystem root sementara berukuran kecil yang disimpan tanpa enkripsi di `/boot`. Tugasnya menemukan perangkat LUKS, meminta passphrase, membukanya, lalu menyerahkan kendali ke root yang sebenarnya. Biasanya prompt hanya muncul di konsol lokal.
`dropbear-initramfs` menambahkan tiga hal ke initramfs tersebut: server SSH Dropbear, langkah penyiapan jaringan, dan helper `cryptroot-unlock`. Dropbear berjalan sebelum prompt passphrase, hanya menerima login kunci publik dari kunci yang Anda tanamkan, dan `cryptroot-unlock` meneruskan passphrase Anda ke prompt `cryptsetup` yang sedang menunggu. Setelah root terbuka, initramfs mematikan Dropbear dan server OpenSSH Anda yang sebenarnya berjalan seperti biasa.
Path file berbeda antarversi
Direktori konfigurasi berpindah sejak Dropbear 2022.83. Banyak tutorial lama masih menampilkan path lama, dan kunci yang ditaruh di sana diabaikan diam-diam pada rilis terbaru. Periksa rilis Anda sebelum menyalin perintah.
Note · File opsinya adalah `dropbear.conf` di direktori yang sama pada setiap rilis. Host key initramfs juga berada di sana (`dropbear_ed25519_host_key` dan sejenisnya) dan terpisah dari host key OpenSSH sistem yang sedang berjalan.
| Rilis | Direktori konfigurasi | File kunci |
|---|---|---|
| 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 dan lebih lama | `/etc/dropbear-initramfs/` | `/etc/dropbear-initramfs/authorized_keys` |
Langkah demi langkah di Debian 12/13 dan Ubuntu 24.04
- 01.Pasang paketnya: `apt install dropbear-initramfs`. Peringatan tentang file `authorized_keys` yang hilang atau tidak valid pada tahap ini memang wajar.
- 02.Tambahkan kunci publik Anda, idealnya kunci Ed25519 khusus, ke `/etc/dropbear/initramfs/authorized_keys`, satu kunci per baris, dan batasi agar satu-satunya yang bisa dilakukannya adalah membuka kunci.
- 03.Atur opsi Dropbear di `/etc/dropbear/initramfs/dropbear.conf`, termasuk port non-default agar host key initramfs tidak bentrok dengan host key SSH normal Anda di `known_hosts`.
- 04.Konfigurasikan jaringan untuk initramfs dengan parameter kernel `ip=` (statis) atau andalkan DHCP jika jaringan VPS Anda mendukungnya.
- 05.Build ulang initramfs dengan `update-initramfs -u` dan, jika Anda mengubah command line kernel, jalankan `update-grub`.
- 06.Reboot dengan akses konsol terbuka sebagai cadangan, lalu hubungkan dan jalankan `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 -uKonfigurasi jaringan di initramfs
Initramfs tidak membaca `/etc/network/interfaces`, netplan, atau systemd-networkd. Ia memakai parameter kernel `ip=`, atau baris `IP=` di `/etc/initramfs-tools/initramfs.conf`. Jika keduanya tidak diatur, ia mencoba DHCP di semua interface, yang berhasil di banyak cloud tetapi tidak dijamin di VPS dengan alokasi statis.
Formatnya adalah `ip=<client-ip>::<gateway-ip>:<netmask>:<hostname>:<device>:off`. Gunakan nilai dari `ip -4 addr` dan `ip route` di sistem yang sedang berjalan. Nama interface di dalam initramfs biasanya sama dengan nama yang dapat diprediksi (misalnya `ens3` atau `eth0`); jika ragu, kosongkan kolom device dan interface pertama yang akan dipakai. IPv4 adalah pilihan yang andal di sini, karena dukungan IPv6 pada langkah jaringan initramfs terbatas.
# /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-unlockMembuka kunci dan penggunaan sehari-hari
Setelah reboot, tunggu hingga server merespons di port 2222, lalu hubungkan sebagai `root`. Dengan forced command dari langkah penyiapan, `cryptroot-unlock` langsung berjalan dan meminta passphrase LUKS; tanpanya, Anda mendapat shell BusyBox dan mengetik `cryptroot-unlock` sendiri. Jika berhasil, sesi tertutup, initramfs melanjutkan boot, dan semenit kemudian server SSH reguler Anda merespons di port 22, diperkuat seperti di panduan hardening SSH.
Gunakan entri `known_hosts` terpisah untuk port unlock, misalnya blok `Host myserver-unlock` di `~/.ssh/config` dengan `Port 2222` dan `HostKeyAlias myserver-unlock`. Setiap kali kernel diperbarui, Debian dan Ubuntu membuat ulang initramfs dan mempertahankan kunci serta opsi Dropbear Anda, tetapi uji satu kali reboot setelah upgrade besar.
- ▹Connection refused: konfigurasi jaringan salah; periksa nilai `ip=` di konsol.
- ▹Peringatan host key: Anda mengenai host key initramfs dengan alias normal; gunakan alias terpisah.
- ▹`cryptroot-unlock` menyatakan tidak ada perangkat yang menunggu: sistem sudah selesai boot, atau `/etc/crypttab` tidak memiliki entri root.
- ▹Perubahan kunci tidak berpengaruh: Anda mengedit path lama `/etc/dropbear-initramfs/` atau lupa `update-initramfs -u`.
Model ancaman: apa yang dilindungi dan tidak dilindungi remote unlock
LUKS dengan remote unlock melindungi data at rest. Disk yang mati, image disk yang disalin, drive yang sudah dinonaktifkan, atau server yang disita dalam keadaan mati hanya mengungkap ciphertext. Itu jaminan yang nyata dan berguna untuk VPS.
Fitur ini tidak melindungi server yang sedang berjalan dari siapa pun yang mengendalikan host. Initramfs dan kernel di `/boot` tidak terenkripsi, sehingga orang dengan akses hypervisor atau konsol dapat memodifikasinya untuk merekam passphrase Anda pada boot berikutnya, dan memori VM yang berjalan, termasuk master key LUKS, dapat dibaca dari host. Anggap remote unlock sebagai perlindungan terhadap penyitaan dan kebocoran disk, bukan terhadap hypervisor yang berniat jahat. Anomali saat reboot, seperti host key Dropbear yang berubah, patut diselidiki.
Note · Di VPS NoctisNode Anda mendapat root penuh di KVM dengan image Debian 13/12 dan Ubuntu 24.04, sehingga setup ini bekerja seperti yang dijelaskan. Batasan yang sama berlaku di sini seperti di mana pun: enkripsi melindungi disk, bukan guest yang sedang berjalan. Lihat penjelasan VPS no-logs untuk apa yang dicatat dan tidak dicatat di sisi penyedia.
FAQ
QDi mana file authorized_keys dropbear initramfs di Debian 12?
ADi Debian 12 dan 13 serta Ubuntu 24.04, lokasinya `/etc/dropbear/initramfs/authorized_keys`. Debian 11 dan Ubuntu 22.04 memakai `/etc/dropbear-initramfs/authorized_keys`. Jalankan `update-initramfs -u` setelah setiap perubahan.
QApa fungsi cryptroot-unlock?
A`cryptroot-unlock` adalah helper di dalam initramfs yang menemukan prompt passphrase LUKS yang tertunda dan meneruskan passphrase yang Anda ketik ke prompt tersebut. Begitu perangkat terbuka, boot berlanjut dan sesi Dropbear berakhir.
QBagaimana cara mengubah port SSH dropbear-initramfs?
ASet `DROPBEAR_OPTIONS="-p 2222"` (plus flag lain jika perlu) di `/etc/dropbear/initramfs/dropbear.conf`, lalu jalankan `update-initramfs -u` dan reboot.
QApakah remote unlock LUKS lewat SSH aman di VPS?
AFitur ini melindungi data di disk yang mati atau disalin. Fitur ini tidak bisa melindungi dari orang dengan akses hypervisor, yang dapat mengubah initramfs yang tidak terenkripsi atau membaca memori VM yang sedang berjalan.
QBisakah saya memakai LUKS2 dengan dropbear-initramfs?
ABisa. Proses unlock terjadi di userspace Linux dengan `cryptsetup`, sehingga LUKS2 dengan Argon2id berfungsi; lihat LUKS2 vs LUKS1 untuk perbedaan formatnya.