SSH हेडलेस सर्वर बूट के दौरान एन्क्रिप्टेड LVM को डिक्रिप्ट करना है?


59

जब मैंने Ubuntu 10.04 और अब 10.10 स्थापित किया, तो मुझे अपनी हार्ड ड्राइव के लिए "एन्क्रिप्टेड LVM" को सक्षम करने का विकल्प प्रदान किया गया। उस विकल्प को चुनने के बाद, मुझे LVM को डिक्रिप्ट करने के लिए बूट के दौरान अपने पासवर्ड के लिए कहा जाता है।

अब, मैं एक हेडलेस सर्वर स्थापित करने के बारे में सोच रहा हूं जो लिनक्स चलाता है (जरूरी नहीं कि उबंटू), लेकिन मुझे चिंता है कि चूंकि सर्वर हेडलेस है इसलिए मैं स्टार्टअप के दौरान इसे डिक्रिप्ट नहीं कर पाऊंगा। क्या मैं एन्क्रिप्टेड LVM के लिए अपना पासवर्ड दर्ज करने के लिए बूट के दौरान SSH कर पाऊंगा? यदि हां, तो मैं इसे कैसे स्थापित करूं? या कोई और उपाय है? फिर से यह सवाल उबंटू के लिए विशिष्ट नहीं है। धन्यवाद।


4
इसे भी देखें:zless /usr/share/doc/cryptsetup/README.remote.gz
0xC0000022L

मुझे लगता है कि @Nate के उत्तर को स्वीकार किया जाना चाहिए: यह (अनिवार्य रूप से, चूंकि लिंक किए गए ब्लॉग में परिवर्तनों को प्रतिबिंबित करने के लिए एक संपादन की आवश्यकता होती है) निजी की बजाय सार्वजनिक कुंजी का उपयोग करता है।
जोनाथन वाई।

जवाबों:


25

Ubuntu के नए संस्करणों के लिए, उदाहरण के लिए, 14.04, मुझे @dragly का संयोजन मिला और इस ब्लॉगपोस्ट के उत्तर बहुत उपयोगी थे। विवरण बताने के लिए:

  1. (सर्वर पर) ड्रॉपबियर स्थापित करें

    sudo apt-get install dropbear
    
  2. (सर्वर पर) रूट सार्वजनिक / निजी कुंजी लॉगिन के लिए अनुमतियों की प्रतिलिपि बनाएँ और असाइन करें

    sudo cp /etc/initramfs-tools/root/.ssh/id_rsa ~/.
    sudo chown user:user ~/id_rsa
    

बदलने के लिए याद उपयोगकर्ता सर्वर पर आपके उपयोगकर्ता नाम के

  1. (क्लाइंट पर) सर्वर से निजी कुंजी प्राप्त करें

    scp user@remote.server:~/id_rsa ~/.ssh/id_rsa_dropbear
    
  2. (क्लाइंट पर) ssh config में प्रविष्टि जोड़ें

    Host parkia
        Hostname 192.168.11.111
        User root
        UserKnownHostsFile ~/.ssh/know_hosts.initramfs
        IdentityFile ~/.ssh/id_rsa_dropbear
    Remember to change _parkia_ to whatever you'd like to type `ssh my-box` to be.
    
  3. (सर्वर पर) इस फ़ाइल को बनाएँ/etc/initramfs-tools/hooks/crypt_unlock.sh

  4. (सर्वर पर) उस फ़ाइल को निष्पादन योग्य बनाएं

    sudo chmod +x /etc/initramfs-tools/hooks/crypt_unlock.sh
    
  5. Initramfs अपडेट करें

    sudo update-initramfs -u
    
  6. विभाजन पर ड्रॉपबियर सेवा को अक्षम करें ताकि विभाजन के डिक्रिप्ट होने के बाद ओपनश का उपयोग किया जाए

    sudo update-rc.d dropbear disable
    

हो गया। कोशिश करके देखो। यदि आप कुछ करना चाहते हैं, तो एक स्थिर आईपी पते के साथ सर्वर को कॉन्फ़िगर करने के तरीके के बारे में निर्देशों के लिए ऊपर दिए गए ब्लॉग पोस्ट की जांच करें।


लिंक किए गए ब्लॉग ने एक क्लाइंट की सार्वजनिक कुंजी को सर्वर के साथ जोड़ने के लिए एक संदर्भ जोड़ा है /etc/initramfs-tools/root/.ssh/authorized_keys, भले ही यह अभी भी ड्रॉपबियर की निजी कुंजी की प्रतिलिपि के माध्यम से जाता है, जिसे कोई पूरी तरह से अवहेलना कर सकता है। बाकी निर्देशों का पालन करना मेरे लिए काम करता है, जिसका अर्थ है कि यह स्वीकृत उत्तर होना चाहिए (एक बार यह उस बदलाव को दर्शाता है), क्योंकि यह केवल सार्वजनिक कुंजी का उपयोग करता है।
जोनाथन वाई।

23

इस ब्लॉग पोस्ट में बिजीबॉक्स और ड्रॉपबियर के साथ ऐसा सेटअप करने के लिए एक गाइड दिखाया गया है । शुरुआती-एसएस ने मेरे लिए काम नहीं किया और जाहिर तौर पर अब इसकी जरूरत नहीं है।

मैंने संक्षेप में बताया है कि आपको निम्नलिखित में क्या करने की आवश्यकता है। अधिक जानकारी के लिए, उपरोक्त पोस्ट पर एक नज़र डालें:

  1. अपने सर्वर पर बिजीबॉक्स और ड्रॉपबियर स्थापित करें

    sudo apt-get install dropbear busybox
    
  2. सर्वर पर अपने initramfs को अपडेट करें

    sudo update-initramfs -u
    
  3. अपने ग्राहक मशीन के लिए ड्रॉपबियर द्वारा उत्पन्न निजी कुंजी की प्रतिलिपि बनाएँ। आपको इसे एक नई अवधि के लिए कॉपी करना होगा और ऐसा करने के लिए स्वामित्व बदलना होगा। अपने सर्वर पर निम्न कार्य करें:

    sudo cp /etc/initramfs-tools/root/.ssh/id_rsa ~/.
    sudo chown user:user ~/id_rsa
    

    उपयोगकर्ता को अपने उपयोगकर्ता नाम से बदलना याद रखें। पासवर्ड लॉगिन काम नहीं लगता है।

  4. अब आप अपने क्लाइंट पर निम्नलिखित कॉल करके निजी कुंजी को scp के साथ स्थानांतरित कर सकते हैं :

    scp user@remote.server:~/id_rsa ~/.ssh/id_rsa_dropbear
    
  5. आसान लॉगिन के लिए अपने क्लाइंट का s / / .ssh / config फाइल सेट करें । इसे टेक्स्ट एडिटर के साथ खोलें और निम्नलिखित जोड़ें:

    Host myremoteserver
        HostName my.remote.server
        User root
        UserKnownHostsFile ~/.ssh/known_hosts.initramfs
        IdentityFile ~/.ssh/id_rsa_dropbear
    

    अपने सर्वर के नाम पर होस्ट को बदलें जो भी आपको पसंद है और होस्टनाम करें। उपयोगकर्ता को रूट होने दें। यह ड्रॉपबियर में एकमात्र स्वीकृत उपयोगकर्ता प्रतीत होता है। फ़ाइल को सहेजें और बंद करें।

  6. अपने सर्वर को पुनरारंभ करें और पासफ़्रेज़ प्रॉम्प्ट की प्रतीक्षा करें। ड्रॉपबियर को अपने इंटरनेट कनेक्शन का पता लगाने और सेट करने के लिए कुछ सेकंड दें। अपने क्लाइंट पर निम्न कमांड के साथ अपने सर्वर से कनेक्ट करें :

    ssh myremoteserver # or any name you chose
    
  7. जब लॉग इन किया जाता है, तो अपने सर्वर पर निम्न कमांड जारी करें । विवरण के लिए ब्लॉग पोस्ट देखें:

    pid=`ps | grep "/scripts/local-top/cryptroot" | cut -d " " -f 3`
    kill -9 $pid
    sleep 35
    /scripts/local-top/cryptroot
    pid=`ps | grep "/bin/sh" | cut -d " " -f 3`
    kill -9 $pid;
    

    अपना पासफ़्रेज़ टाइप करने में आपको कुछ समय (30 सेकंड) लगेगा। संकेत मिलने पर इसे टाइप करें।

  8. टाइप करके कनेक्शन बंद करें

    exit
    
  9. आपके सर्वर को अब सामान्य रूप से अपनी एन्क्रिप्टेड हार्ड ड्राइव और बूट को अनलॉक करना चाहिए।

(ब्लॉग पोस्ट के मूल लेखक के लिए बहुत बड़ा धन्यवाद!)


2
मैं निजी चाबियों के साथ घूमने का कारण नहीं समझता। रूट सर्वर के लिए अधिकृत कुंजी के रूप में सर्वर पर क्लाइंट मशीन पर आपकी सार्वजनिक कुंजी को कॉपी करने के लिए पर्याप्त होना चाहिए?
gertvdijk

मुझे यकीन है कि क्लाइंट मशीन पर मुख्य जोड़ी बनाना संभव है और केवल सार्वजनिक कुंजी को सर्वर से स्थानांतरित करना है, लेकिन अगर मुझे सही ढंग से याद है तो मुझे लगता है कि एक प्रारूप खोजने में कुछ समस्याएं थीं जो बिजीबॉक्स स्वीकार करेगा। इसलिए सर्वर पर पहले से मौजूद कुंजियों का पुन: उपयोग करना एकमात्र विकल्प था जो मुझे काम कर रहा था।
9

1
किसी भी विचार मुझे क्या करना चाहिए यह आर्क लिनक्स पर काम करने के लिए?
गेरहार्डक

1
@ गेरमैन आर्चीक्स पर शुरुआती-एसएस समर्थन के लिए AUR में dropbear_initrd_encrypt पैकेज देखें।
कालेब

1
@Ghhman archwiki पेज: रूट या अन्य विभाजन का रिमोट अनलॉकिंग अभी तक नहीं किया गया है, लेकिन यह दिलचस्प लग रहा है। इसे देखना होगा :)
hanetzer

18

मुझे लगता है कि आप जो खोज रहे हैं, वह शुरुआती-एसएस प्रदान करता है:

Early-ssh is a simple initramfs hook, which installs Dropbear SSH server into  
your initramfs, and starts it at boottime, so you will be able to do a lot of  
things remotely over SSH, before your root partition gets mounted, for example:

* unlocking LUKS encrypted crypto devices - 
  even your root can be an encrypted filesystem
* assembling/altering RAID arrays (mdadm)
* checking the root filesystem in read-write mode, 
  taking action in case of errors
* and so on...

पहले से ही .deb पैकेज उपलब्ध है, इसलिए आप उबंटू के साथ शायद ठीक हैं।


ऐसा लगता है कि वास्तव में मैं क्या देख रहा हूँ, धन्यवाद!
२३:१० बजे २३:३० बजे

3
क्या आपके पास एक अच्छे ट्यूटोरियल या हाउटो का लिंक है? मैं अपने डेबियन निचोड़ बॉक्स पर शुरुआती एसएस के साथ फंस गया हूं।

1
हाँ एक ट्यूटोरियल बहुत अच्छा होगा।
14


16

इस /usr/share/doc/cryptsetup/README.remote.gz(Ubuntu पैकेज cryptsetup) में इसके लिए cryptsetup readme पर एक नज़र है । इसे पूरा करने के लिए एक पूर्ण मार्गदर्शिका है। यह ड्रैगली के उत्तर के समान है , लेकिन मुझे लगता है कि यह थोड़ा अधिक सुरुचिपूर्ण है। (ड्रॉपबियर स्वरूपित चाबियाँ, एक नाजुक खोल स्क्रिप्ट के बजाय एक एफआईएफओ के माध्यम से पासफ़्रेज़ को पारित करना, आदि)

एसआईटी लॉगिन के माध्यम से रूटफुट को अनलॉक करना initramfs में

आप अपने रूटफुट को रिमोट से बूटअप पर अनलॉक कर सकते हैं, एसआईटी का उपयोग बूटिंग सिस्टम में लॉग इन करने के लिए करते हैं, जबकि यह इनटॉयलेट्स घुड़सवार के साथ चल रहा है।

सेट अप

काम करने के लिए रिमोट अनलॉक करने के लिए, इनट्रैम्फ बनाने से पहले निम्नलिखित पैकेजों को स्थापित करना होगा: dropbear busybox

फ़ाइल /etc/initramfs-tools/initramfs.confinitramfs का निर्माण करते समय उपयोग किए जाने वाले कॉन्फ़िगरेशन विकल्प रखती है। इसमें शामिल होना चाहिए BUSYBOX=y (यह डिफॉल्ट के रूप में सेट किया गया है जब बिजीबॉक्स पैकेज स्थापित है) DROPBEAR=nने इनफ्रेमफोर्स में बिजीबॉक्स को इनस्टॉल किया है, और इसमें ऐसा नहीं होना चाहिए , जो इनट्रामर्फ में ड्रॉपबियर की स्थापना को निष्क्रिय कर दे। यदि सेट किया जाता है DROPBEAR=y, तो ड्रॉपबियर किसी भी मामले में स्थापित किया जाएगा; यदि DROPBEARवह बिल्कुल सेट नहीं है, तो ड्रॉपबीयर केवल एक मौजूदा क्रिप्टोकरेंसी सेटअप के मामले में स्थापित किया जाएगा।

Initramfs के लिए उपयोग की जाने वाली होस्ट कुंजी dropbear_dss_host_keyऔर dropbear_rsa_host_key, दोनों में स्थित हैं /etc/initramfs-tools/etc/dropbear/। अगर इनट्रामर्फ्स संकलित होने पर वे मौजूद नहीं हैं, तो वे स्वचालित रूप से बनाए जाएंगे। उन्हें मैन्युअल रूप से बनाने के लिए निम्नलिखित आदेश दिए गए हैं:

dropbearkey -t dss -f /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
dropbearkey -t rsa -f /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key

जैसे initramfs को एन्क्रिप्ट नहीं किया जाएगा, publickey प्रमाणीकरण मान लिया गया है। इसके लिए उपयोग की जाने वाली कुंजी (एस) से ली जाएगी /etc/initramfs-tools/root/.ssh/authorized_keys। यदि यह फ़ाइल मौजूद नहीं है जब initramfs संकलित है, तो इसे बनाया /etc/initramfs-tools/root/.ssh/id_rsa.pubजाएगा और इसे इसमें जोड़ा जाएगा। यदि बाद वाली फ़ाइल मौजूद नहीं है, तो यह अपने आप जेनरेट हो जाएगी - आपको मिलान निजी कुंजी मिल जाएगी, जिसे आपको बाद में initramfs में लॉग इन करने की आवश्यकता होगी /etc/initramfs-tools/root/.ssh/id_rsa (या id_rsa.dropbearयदि आपको ड्रॉपबियर प्रारूप में इसकी आवश्यकता है)। संबंधित चरण मैन्युअल रूप से करने के लिए निम्नलिखित आदेश हैं:

एक कुंजी बनाने के लिए (ड्रॉपबियर प्रारूप में):

dropbearkey -t rsa -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear

ड्रॉपबियर प्रारूप से ओपनश प्रारूप में कुंजी परिवर्तित करने के लिए:

/usr/lib/dropbear/dropbearconvert dropbear openssh \
    /etc/initramfs-tools/root/.ssh/id_rsa.dropbear \
    /etc/initramfs-tools/root/.ssh/id_rsa

सार्वजनिक कुंजी निकालने के लिए:

dropbearkey -y -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear | \
    grep "^ssh-rsa " > /etc/initramfs-tools/root/.ssh/id_rsa.pub

सार्वजनिक कुंजी को अधिकृत_की फ़ाइल में जोड़ने के लिए:

cat /etc/initramfs-tools/root/.ssh/id_rsa.pub >> /etc/initramfs-tools/root/.ssh/authorized_keys

मामले में आप कुछ इंटरफेस DHCP का उपयोग कर कॉन्फ़िगर किया गया करने के लिए, सेटिंग चाहते DEVICE=में /etc/initramfs-tools/initramfs.confपर्याप्त होना चाहिए। Initramfs को ip=कर्नेल पैरामीटर का सम्मान करना चाहिए । यदि आप ग्रब का उपयोग करते हैं, तो आप शायद इसे /boot/grub/menu.lst' # kopt=' लाइन में या विशिष्ट ' kernel' लाइन (एस) के साथ जोड़ना चाहते हैं । ip=कर्नेल पैरामीटर में दर्ज है Documentation/nfsroot.txtकर्नेल स्रोत पेड़ में।

मुद्दे

update-initramfsजब आप इसे प्रभावी बनाने के लिए कॉन्फ़िगर को बदलते हैं तो चलाना न भूलें !

Ssh डेमन के लिए पर्याप्त एन्ट्रॉपी इकट्ठा करना कभी-कभी एक मुद्दा लगता है। Ssh डेमॉन का स्टार्टअप तब तक विलंबित हो सकता है जब तक कि पर्याप्त एन्ट्रापी को पुनः प्राप्त नहीं किया जाता है। यह स्टार्टअप प्रक्रिया के लिए गैर-अवरुद्ध है, इसलिए जब आप कंसोल पर होते हैं तो आपको अपने स्टार्टअप को पूरा करने के लिए sshd का इंतजार नहीं करना होगा।

अनलॉक करने की प्रक्रिया

रिमोट से अनलॉक करने के लिए, आप ऐसा कुछ कर सकते हैं:

ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \
    -i "~/id_rsa.initramfs" root@initramfshost.example.com \
    "echo -ne \"secret\" >/lib/cryptsetup/passfifo"

यह उदाहरण मानता है कि आपके पास एक अतिरिक्त known_hostsफ़ाइल है " ~/.ssh/known_hosts.initramfs" जो क्रिप्टोकरेंसी सिस्टम की होस्ट-कुंजी रखती है, कि आपके पास एक फाइल है " ~/id_rsa.initramfs" जो क्रिप्टोकरेंसी सिस्टम के लिए अधिकृत-कुंजी रखता है, जो कि क्रिप्टोकरेंसी सिस्टम का नाम " initramfshost.example.com" है, और वह है क्रिप्टोकरंसी पासफ़्रेज़ " secret" है

- < debian@x.ray.net>, बुध, 30 सितंबर 2009

एक अलग चैनल पर मुझे यह बताने के लिए धन्यवाद ।


1
यह हैकिश पीएस-ग्रीपिंग की तुलना में बहुत बेहतर विचार (ऑफिकल डॉक्स और सब कुछ में वर्णित किया गया) जैसा लगता है। हालांकि प्रदान की गई अनलॉकिंग प्रक्रिया पर एक साइड नोट के रूप में, कोई सीधे कमांड लाइन पर पासफ़्रेज़ टाइप करने के बारे में सतर्क रहना चाह सकता है क्योंकि यह संभवतः एक शेल इतिहास फ़ाइल में कहीं खत्म हो जाएगा। एक संभव समाधान एक छोटे आवरण स्क्रिप्ट का उपयोग करके पासफ़्रेज़ के लिए संकेत दे रहा है read -s -p
जोएलपेट

1
ध्यान दें कि हाल ही के उबंटू संस्करणों में उस दृष्टिकोण के साथ समस्याएँ हैं, अर्थात बग्सलांचपड.नेट
फ्रेडरिक नॉर्ड

6

आप बूट करने के लिए सक्षम होने के लिए चाहते हैं, तो पहुंच से बाहर के रूप में अच्छी तरह से दूर से ही, आप किसी को देखना चाहिए Mandos (जो मैं और अन्य लोगों के लिए लिखा है):

मंडोस एन्क्रिप्टेड रूट फाइल सिस्टम के साथ सर्वरों को बिना अनुमति के रिबूट करने और / या दूर से रिबूट करने की अनुमति देने के लिए एक प्रणाली है। देखें परिचय पुस्तिका पेज एक पूछे जाने वाले प्रश्न सूची सहित अधिक जानकारी के लिए फ़ाइल।

संक्षेप में, बूटिंग सर्वर को सुरक्षित फैशन में, नेटवर्क पर पासवर्ड प्राप्त होता है। विवरण के लिए README देखें।


आपके योगदान के लिए धन्यवाद, लेकिन ध्यान दें कि आपके उत्पाद के लगभग समान-समान उल्लेख होने के कारण आपके पोस्ट के 100% बॉर्डरलाइन व्यवहार हैं , और आप स्पैम के रूप में जाने का जोखिम चलाते हैं (यदि मैंडोस मुक्त सॉफ़्टवेयर नहीं था तो मैंने आपके पोस्ट को फ़्लैग किया है या आपके पास अन्य साइटों पर गैर-मंडोस पदों का इतिहास नहीं है)।
गाइल्स

@ गिल्स: अब हो गया।
टेडी

2

बिना सर्वर के? यदि इसमें सीरियल पोर्ट है, तो इसका उपयोग करें।

सीरियल पोर्ट पर काम करने के लिए GRUB को कॉन्फ़िगर किया जा सकता है। आपके कर्नेल को आरंभिक बूट संदेशों को आउटपुट करने के लिए सीरियल पोर्ट का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है, अपने ड्राइव को अनलॉक करने के लिए पासवर्ड इनपुट कर सकते हैं, और लॉग इन कर सकते हैं (यदि आपका सर्वर सीरियल BIOS का समर्थन करता है, तो इसे भी सक्षम करें। फिर आपको कभी कनेक्ट नहीं करना पड़ेगा। मशीन पर एक निगरानी)।

हमेशा बिना हेड सर्वर में रहने का "गैर-नेटवर्क" तरीका एक अच्छा विचार है।


महान बिंदु! हालाँकि, " बिना नेटवर्क " के हेडलेस सर्वर में आने के तरीके अधिकतर ( केवल ) प्रासंगिक होते हैं यदि क्लाइंट / सर्वर के बीच भौतिक निकटता होती है; जब तक मैं किसी अन्य संभावना / सीरियल कनेक्शन की सुविधा की अनदेखी नहीं करता।
ILMostro_7

2

आर्च लाइनक्स पर, AUR पैकेज ड्रॉपबियर_इनिट्रेंड_एन्क्रिप्ट होता है जो आपको बॉक्स से बाहर करना चाहता है। वायर्ड इंटरफेस के लिए बहुत अच्छी तरह से काम करता है। मुझे वायरलेस के लिए इसे थोड़ा हैक करना पड़ा।


2

दुर्भाग्य से, उपरोक्त उत्तरों में से किसी ने भी मेरे लिए काम नहीं किया। इसके अलावा, सर्वर से एक निजी कुंजी की नकल करना विरोधाभास लगता है।

किसी भी तरह, निम्नलिखित निर्देशों ने काम किया:

अपने CLIENT के माध्यम से एन्क्रिप्टेड विभाजन को जोड़ने और अनलॉक करके अपने सर्वर को बूट करें

अनिवार्य पैकेज स्थापित करें (SERVER पर)

apt-get install dropbear initramfs-tools busybox

SERVER के अधिकृत_की फ़ाइल में अपनी इच्छित सार्वजनिक कुंजियाँ जोड़ें

बस कॉपी और में आपकी सार्वजनिक कुंजी (रों) पेस्ट /etc/dropbear-initramfs/authorized_keysसर्वर पर

अनलॉक स्क्रिप्ट बनाएँ

स्क्रिप्ट में निम्नलिखित बनाएँ /etc/initramfs-tools/hooks/crypt_unlock.sh

#!/bin/sh

PREREQ="dropbear"

prereqs() {
  echo "$PREREQ"
}

case "$1" in
  prereqs)
    prereqs
    exit 0
  ;;
esac

. "${CONFDIR}/initramfs.conf"
. /usr/share/initramfs-tools/hook-functions

if [ "${DROPBEAR}" != "n" ] && [ -r "/etc/crypttab" ] ; then
cat > "${DESTDIR}/bin/unlock" << EOF
#!/bin/sh
if PATH=/lib/unlock:/bin:/sbin /scripts/local-top/cryptroot; then
kill \`ps | grep cryptroot | grep -v "grep" | awk '{print \$1}'\`
# following line kill the remote shell right after the passphrase has
# been entered.
kill -9 \`ps | grep "\-sh" | grep -v "grep" | awk '{print \$1}'\`
exit 0
fi
exit 1
EOF

  chmod 755 "${DESTDIR}/bin/unlock"

  mkdir -p "${DESTDIR}/lib/unlock"
cat > "${DESTDIR}/lib/unlock/plymouth" << EOF
#!/bin/sh
[ "\$1" == "--ping" ] && exit 1
/bin/plymouth "\$@"
EOF

  chmod 755 "${DESTDIR}/lib/unlock/plymouth"

  echo To unlock root-partition run "unlock" >> ${DESTDIR}/etc/motd

fi

इसे निष्पादित करें:

chmod +x /etc/initramfs-tools/hooks/crypt_unlock.sh

एक स्थिर IP बनाएं (या DHCP का उपयोग करने के लिए इस चरण को छोड़ दें)

/etc/initramfs-tools/initramfs.confलाइन जोड़ने (या बदलने) के लिए संपादित करें :

#format [host ip]::[gateway ip]:[netmask]:[hostname]:[device]:[autoconf]
#([hostname] can be omitted)
IP=192.168.1.254::192.168.1.1:255.255.255.0::eth0:off

आरंभिक अपडेट्स अपडेट करें

update-initramfs -u

विभाजन पर ड्रॉपबियर सेवा को अक्षम करें ताकि विभाजन के डिक्रिप्ट होने के बाद ओपनश का उपयोग किया जाए

sudo update-rc.d dropbear disable

परिक्षण

  • अपने सर्वर को रिबूट करें
  • के माध्यम से अपने सर्वर से कनेक्ट करें ssh root@192.168.1.254 [-i ~/.ssh/id_rsa]

2

डेबियन 9 (स्थिर) पर, यह समाधान पुराना था। स्थापना के दौरान, मुझे इसके बारे में एक चेतावनी मिलती है dropbear: WARNING: Invalid authorized_keys file, remote unlocking of cryptroot via SSH won't work!, और मुझे आवश्यक कुंजी नहीं मिल पा रही थी। यह विधि वास्तव में सरल है, और मुझे महान # चैनल चैनल (फिर से धन्यवाद) पर समझाया गया है:

पहले सुनिश्चित करें कि busybox, dropbearऔर dropbear-initramfsस्थापित हैं

sudo apt install busybox dropbear*

फिर ~/.ssh/id_rsa.pubफ़ाइल में अपनी सार्वजनिक कुंजी (अधिकांश समय ) जोड़ें /etc/dropbear-initramfs/authorized_keys

फिर initramfsपरिवर्तनों को ध्यान में रखने के लिए अपडेट करें:: अपडेट-initramfs -u

बस इतना ही!

ध्यान दें, यदि आप बीच की चाबियों के बीच टकराव से बचना चाहते हैं dropbearऔर openssh(वे एक ही आईपी साझा करते हैं, लेकिन एक अलग कुंजी का उपयोग करते हैं), तो आप अपने ग्राहक को ~/.ssh/configकुछ इस तरह से रखना चाह सकते हैं :

Host myserver_luks_unlock
     User root
     Hostname <myserver>
     # The next line is useful to avoid ssh conflict with IP
     HostKeyAlias <myserver>_luks_unlock
     Port 22
     PreferredAuthentications publickey
     IdentityFile ~/.ssh/id_rsa

उसके बाद, आप बस का उपयोग कर कनेक्ट करें:

ssh myserver_luks_unlock

और एक बार जब आपको एक प्रॉम्प्ट मिलता है, तो व्यस्तबॉक्स प्रॉम्प्ट के अनुसार सुझाव दें:

cryptroot-unlock

और अपना पासवर्ड टाइप करें।

का आनंद लें!



0

मैं इस पृष्ठ पर दूसरों द्वारा बताई गई तकनीक का उपयोग कर रहा हूं (एसएसएच इनइट्रामॉफ़्स में एक कर्नेल IPपैरामीटर के साथ नेटवर्किंग को कॉन्फ़िगर करने के लिए) काफी सालों से अब हेडलैस उबंटू लिनक्स सर्वर (12.02, 14.04, 16.04 और 18.04) को दूरस्थ रूप से अनलॉक करने के लिए।

मैं यहां तक ​​कि एक पायथन प्रोग्राम ( अनलॉक-रिमोट-सिस्टम ) विकसित करने के लिए गया था जो मेरे लिए वास्तविक अनलॉकिंग करता है, क्योंकि ऐसा करने की प्रक्रिया मैन्युअल रूप से थोड़ी नाजुक थी और मैंने अपने सर्वरों को रिबूट करना शुरू कर दिया था, इसलिए आत्मा में "अगर यह दर्द होता है तो इसे स्वचालित करने लायक है" मैंने पायथन 😇 में अपने ज्ञान को एन्कोड किया (और यह वास्तव में सुरक्षा अपडेट लागू करने के लिए नियमित रूप से रिबूट करने के लिए बहुत आसान बना दिया गया है)।

तब से मैंने दुनिया के साथ रिमोट रूट डिस्क एन्क्रिप्शन पर अपने निजी नोट्स भी साझा करने का फैसला किया । लिंक किए गए पृष्ठ में प्रक्रिया के बारे में काफी कुछ विवरण शामिल हैं (कुछ संकेत जो यहां उल्लिखित नहीं हैं) और मैं इसे अद्यतित रखने का इरादा रखता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.