NoctisNode
← गाइडसुरक्षा2026-10-238 मिनट

SSH से LUKS रिमोट अनलॉक: dropbear-initramfs और cryptroot-unlock

बूट के समय रिमोट सर्वर पर LUKS root अनलॉक करें: dropbear-initramfs इंस्टॉल करें, अपनी key जोड़ें, पोर्ट और IP सेट करें, initramfs दोबारा बनाएँ, फिर SSH से लॉगिन करके cryptroot-unlock चलाएँ।

संक्षेप में: `dropbear-initramfs` इंस्टॉल करें, अपनी SSH public key `/etc/dropbear/initramfs/authorized_keys` (Debian 12/13, Ubuntu 24.04) में डालें, initramfs को नेटवर्क कॉन्फ़िग दें, `update-initramfs -u` चलाएँ और रीबूट करें। जब सर्वर passphrase का इंतज़ार कर रहा हो, तब उसके अलग पोर्ट पर छोटे Dropbear सर्वर में SSH करें और `cryptroot-unlock` चलाएँ; इसके बाद बूट सामान्य रूप से आगे बढ़ता है।

यह गाइड मानता है कि root फ़ाइलसिस्टम पहले से LUKS पर है, जैसा LUKS एन्क्रिप्टेड root गाइड में सेट किया गया है, और `/boot` अनएन्क्रिप्टेड है, जो Debian और Ubuntu इंस्टॉलर का डिफ़ॉल्ट है। यह किसी भी KVM VPS पर काम करता है जहाँ kernel और initramfs आपके नियंत्रण में हों, और छोटे VPS पर सेल्फ़-होस्टिंग स्टैक जैसी सर्विसें डिस्क पर रखने से पहले यह एक समझदारी भरी नींव है।

रिमोट अनलॉक कैसे काम करता है

एन्क्रिप्टेड-root सिस्टम पर kernel पहले एक initramfs लोड करता है, जो `/boot` में अनएन्क्रिप्टेड रखा एक छोटा अस्थायी root फ़ाइलसिस्टम है। इसका काम LUKS डिवाइस ढूँढना, passphrase माँगना, उसे खोलना और असली root को कमान सौंपना है। सामान्यतः यह प्रॉम्प्ट सिर्फ़ लोकल कंसोल पर दिखता है।

`dropbear-initramfs` उस initramfs में तीन चीज़ें जोड़ता है: Dropbear SSH सर्वर, एक नेटवर्क सेटअप स्टेप, और `cryptroot-unlock` हेल्पर। Dropbear passphrase प्रॉम्प्ट से पहले शुरू होता है, सिर्फ़ उन keys से public-key लॉगिन स्वीकार करता है जो आपने अंदर डाली हैं, और `cryptroot-unlock` आपका passphrase इंतज़ार कर रहे `cryptsetup` प्रॉम्प्ट तक पहुँचाता है। root खुलने के बाद initramfs Dropbear को बंद कर देता है और आपका असली OpenSSH सर्वर हमेशा की तरह शुरू होता है।

वर्ज़न के बीच फ़ाइल पाथ अलग हैं

Dropbear 2022.83 आने पर कॉन्फ़िगरेशन डायरेक्टरी बदल गई। कई पुराने ट्यूटोरियल अब भी पुराना पाथ दिखाते हैं, और वहाँ रखी key मौजूदा रिलीज़ पर चुपचाप अनदेखी हो जाती है। कमांड कॉपी करने से पहले अपनी रिलीज़ जाँचें।

Note · हर रिलीज़ पर विकल्पों वाली फ़ाइल उसी डायरेक्टरी में `dropbear.conf` है। initramfs की host keys भी वहीं रहती हैं (`dropbear_ed25519_host_key` आदि) और चल रहे सिस्टम की OpenSSH host keys से अलग होती हैं।

रिलीज़कॉन्फ़िग डायरेक्टरीKey फ़ाइल
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 और पुराने`/etc/dropbear-initramfs/``/etc/dropbear-initramfs/authorized_keys`

Debian 12/13 और Ubuntu 24.04 पर स्टेप-बाय-स्टेप सेटअप

  1. 01.पैकेज इंस्टॉल करें: `apt install dropbear-initramfs`। इस समय `authorized_keys` फ़ाइल गायब या अमान्य होने की चेतावनी आना अपेक्षित है।
  2. 02.अपनी public key, बेहतर हो कि एक अलग Ed25519 key, `/etc/dropbear/initramfs/authorized_keys` में जोड़ें, हर लाइन पर एक key, और उसे इस तरह सीमित करें कि वह सिर्फ़ अनलॉक कर सके।
  3. 03.`/etc/dropbear/initramfs/dropbear.conf` में Dropbear विकल्प सेट करें, जिसमें एक गैर-डिफ़ॉल्ट पोर्ट भी हो ताकि `known_hosts` में initramfs host key आपकी सामान्य SSH host key से न टकराए।
  4. 04.initramfs के लिए `ip=` kernel पैरामीटर (स्टैटिक) से नेटवर्क कॉन्फ़िगर करें, या अगर आपका VPS नेटवर्क सपोर्ट करता हो तो DHCP पर निर्भर रहें।
  5. 05.`update-initramfs -u` से initramfs दोबारा बनाएँ और अगर आपने kernel command line बदली है, तो `update-grub` चलाएँ।
  6. 06.बैकअप के तौर पर कंसोल एक्सेस खुला रखकर रीबूट करें, फिर कनेक्ट करें और `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

initramfs में नेटवर्क कॉन्फ़िगरेशन

initramfs `/etc/network/interfaces`, netplan या systemd-networkd नहीं पढ़ता। वह kernel का `ip=` पैरामीटर, या `/etc/initramfs-tools/initramfs.conf` में `IP=` लाइन इस्तेमाल करता है। दोनों में से कुछ भी सेट न हो, तो वह सभी इंटरफ़ेस पर DHCP आज़माता है, जो कई क्लाउड पर काम करता है लेकिन स्टैटिक असाइनमेंट वाले VPS पर इसकी गारंटी नहीं है।

फ़ॉर्मेट `ip=<client-ip>::<gateway-ip>:<netmask>:<hostname>:<device>:off` है। चल रहे सिस्टम पर `ip -4 addr` और `ip route` से मिले मान इस्तेमाल करें। initramfs के अंदर इंटरफ़ेस का नाम आमतौर पर वही predictable नाम होता है (जैसे `ens3` या `eth0`); पक्का न हो तो device फ़ील्ड ख़ाली छोड़ दें, तब पहला इंटरफ़ेस इस्तेमाल होगा। यहाँ IPv4 भरोसेमंद विकल्प है, क्योंकि initramfs के नेटवर्क स्टेप में IPv6 सपोर्ट सीमित है।

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

अनलॉक करना और रोज़मर्रा का इस्तेमाल

रीबूट के बाद तब तक इंतज़ार करें जब तक सर्वर पोर्ट 2222 पर जवाब न दे, फिर `root` के रूप में कनेक्ट करें। सेटअप स्टेप वाली forced command के साथ `cryptroot-unlock` तुरंत शुरू होकर LUKS passphrase माँगता है; उसके बिना आपको BusyBox शेल मिलता है और `cryptroot-unlock` ख़ुद टाइप करना होता है। सफल होने पर सेशन बंद हो जाता है, initramfs बूट जारी रखता है, और एक मिनट बाद आपका सामान्य SSH सर्वर पोर्ट 22 पर जवाब देता है, जिसे SSH हार्डनिंग गाइड की तरह मज़बूत किया गया हो।

अनलॉक पोर्ट के लिए अलग `known_hosts` एंट्री रखें, जैसे `~/.ssh/config` में `Port 2222` और `HostKeyAlias myserver-unlock` वाला `Host myserver-unlock` ब्लॉक। हर kernel अपडेट पर Debian और Ubuntu initramfs दोबारा बनाते हैं और आपकी Dropbear key व विकल्प बनाए रखते हैं, लेकिन बड़े अपग्रेड के बाद एक बार रीबूट करके टेस्ट ज़रूर करें।

  • ▹Connection refused: नेटवर्क कॉन्फ़िग ग़लत है; कंसोल पर `ip=` मान जाँचें।
  • ▹Host key चेतावनी: आप सामान्य alias के तहत initramfs host key से टकरा रहे हैं; अलग alias इस्तेमाल करें।
  • ▹`cryptroot-unlock` कहता है कि कोई डिवाइस इंतज़ार नहीं कर रहा: सिस्टम पहले ही बूट हो चुका है, या `/etc/crypttab` में root एंट्री नहीं है।
  • ▹Key बदलने का कोई असर नहीं: आपने पुराना `/etc/dropbear-initramfs/` पाथ एडिट किया या `update-initramfs -u` चलाना भूल गए।

Threat model: रिमोट अनलॉक किससे बचाता है और किससे नहीं

रिमोट अनलॉक के साथ LUKS data at rest की रक्षा करता है। बंद पड़ी डिस्क, कॉपी की गई डिस्क इमेज, सेवामुक्त ड्राइव या बंद हालत में ज़ब्त सर्वर से सिर्फ़ ciphertext मिलता है। VPS के लिए यह एक असली और उपयोगी गारंटी है।

यह चल रहे सर्वर को होस्ट नियंत्रित करने वाले व्यक्ति से नहीं बचाता। `/boot` में initramfs और kernel अनएन्क्रिप्टेड हैं, इसलिए hypervisor या कंसोल एक्सेस वाला कोई व्यक्ति उन्हें बदलकर अगले बूट पर आपका passphrase रिकॉर्ड कर सकता है, और चल रहे VM की मेमोरी, जिसमें LUKS master key भी है, होस्ट से पढ़ी जा सकती है। रिमोट अनलॉक को ज़ब्ती और डिस्क लीक से सुरक्षा मानें, शत्रुतापूर्ण hypervisor से नहीं। रीबूट के समय की विसंगतियाँ, जैसे बदली हुई Dropbear host key, जाँच के लायक हैं।

Note · NoctisNode VPS पर आपको Debian 13/12 और Ubuntu 24.04 इमेज के साथ KVM पर पूरा root मिलता है, इसलिए यह सेटअप बताए अनुसार काम करता है। यहाँ भी वही सीमा लागू है जो हर जगह: एन्क्रिप्शन डिस्क की रक्षा करता है, चल रहे guest की नहीं। प्रोवाइडर की ओर क्या रिकॉर्ड होता है और क्या नहीं, इसके लिए no-logs VPS की व्याख्या देखें।

अक्सर पूछे जाने वाले सवाल

QDebian 12 पर dropbear initramfs की authorized_keys फ़ाइल कहाँ है?

ADebian 12 और 13 तथा Ubuntu 24.04 पर यह `/etc/dropbear/initramfs/authorized_keys` है। Debian 11 और Ubuntu 22.04 में `/etc/dropbear-initramfs/authorized_keys` था। किसी भी बदलाव के बाद `update-initramfs -u` चलाएँ।

Qcryptroot-unlock क्या करता है?

A`cryptroot-unlock` initramfs के अंदर का एक हेल्पर है जो लंबित LUKS passphrase प्रॉम्प्ट ढूँढता है और आपका टाइप किया passphrase उसे देता है। डिवाइस खुलते ही बूट जारी रहता है और Dropbear सेशन ख़त्म हो जाता है।

Qdropbear-initramfs का SSH पोर्ट कैसे बदलें?

A`/etc/dropbear/initramfs/dropbear.conf` में `DROPBEAR_OPTIONS="-p 2222"` (और कोई अन्य फ़्लैग) सेट करें, फिर `update-initramfs -u` चलाएँ और रीबूट करें।

Qक्या VPS पर SSH से LUKS रिमोट अनलॉक सुरक्षित है?

Aयह बंद या कॉपी की गई डिस्क के डेटा की रक्षा करता है। यह hypervisor एक्सेस वाले व्यक्ति से नहीं बचा सकता, जो अनएन्क्रिप्टेड initramfs बदल सकता है या चल रहे VM की मेमोरी पढ़ सकता है।

Qक्या मैं dropbear-initramfs के साथ LUKS2 इस्तेमाल कर सकता हूँ?

Aहाँ। अनलॉक Linux userspace में `cryptsetup` से होता है, इसलिए Argon2id के साथ LUKS2 काम करता है; फ़ॉर्मेट के अंतर के लिए LUKS2 बनाम LUKS1 देखें।

SSH से LUKS रिमोट अनलॉक: dropbear-initramfs और cryptroot-unlock · NoctisNode