ปลดล็อก rootfs ผ่านการล็อกอิน ssh ใน initramfs
คุณสามารถปลดล็อกรูทของคุณในการบูทเครื่องจากระยะไกลโดยใช้ ssh เพื่อล็อกอินเข้าสู่ระบบบูทในขณะที่มันกำลังทำงานเมื่อติดตั้ง initramfs
ติดตั้ง
เพื่อให้การปลดล็อคจากระยะไกลทำงานได้แพคเกจต่อไปนี้จะต้องติดตั้งก่อนสร้าง initramfs: dropbear
busybox
ไฟล์/etc/initramfs-tools/initramfs.conf
เก็บตัวเลือกการกำหนดค่าที่ใช้เมื่อสร้าง initramfs มันควรจะมีBUSYBOX=y
(ซึ่งถูกตั้งค่าเป็นค่าเริ่มต้นเมื่อมีการติดตั้งแพคเกจ busybox) เพื่อให้มีการติดตั้ง busybox ลงใน initramfs และไม่ควรมี
DROPBEAR=n
ซึ่งจะปิดใช้งานการติดตั้ง dropbear ไปยัง initramfs หากตั้งค่าเป็นDROPBEAR=y
dropbear จะถูกติดตั้งในทุกกรณี หาก
DROPBEAR
ไม่ได้ตั้งค่าเลยจะมีการติดตั้ง dropbear เฉพาะในกรณีที่มีการตั้งค่า cryptroot
คีย์โฮสต์ที่ใช้สำหรับ initramfs มีdropbear_dss_host_key
และ
ทั้งที่ตั้งอยู่ในdropbear_rsa_host_key
/etc/initramfs-tools/etc/dropbear/
หากไม่มีอยู่เมื่อทำการรวบรวม initramfs จะมีการสร้างขึ้นโดยอัตโนมัติ ต่อไปนี้เป็นคำสั่งในการสร้างด้วยตนเอง:
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 จะถือว่า คีย์ (s)
/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
ในกรณีที่คุณต้องการในรูปแบบ dropbear) ต่อไปนี้เป็นคำสั่งให้ทำตามขั้นตอนที่เกี่ยวข้องด้วยตนเอง:
ในการสร้างคีย์ (ในรูปแบบดรอปบีด):
dropbearkey -t rsa -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear
ในการแปลงคีย์จากรูปแบบดรอปบีเป็นรูปแบบ openssh:
/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
หากต้องการเพิ่มพับลิกคีย์ไปยังไฟล์ authorized_keys:
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=
' line หรือต่อท้าย ' kernel
' line ที่เฉพาะเจาะจง ip=
พารามิเตอร์เคอร์เนลการบันทึกไว้ในDocumentation/nfsroot.txt
ในต้นไม้มาเคอร์เนล
ประเด็น
อย่าลืมเรียกใช้update-initramfs
เมื่อคุณเปลี่ยนการตั้งค่าเพื่อให้มีประสิทธิภาพ!
การรวบรวมเอนโทรปีที่เพียงพอสำหรับ ssh daemon บางครั้งดูเหมือนว่าเป็นปัญหา การเริ่มต้นของ ssh daemon อาจล่าช้าจนกระทั่งมีการดึงเอนโทรปีเพียงพอ นี่ไม่ใช่การปิดกั้นสำหรับกระบวนการเริ่มต้นดังนั้นเมื่อคุณอยู่ที่คอนโซลคุณจะไม่ต้องรอให้ 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
" ซึ่งเก็บรหัสโฮสต์ของระบบ cryptroot ว่าคุณมีไฟล์ " ~/id_rsa.initramfs
" ซึ่งเก็บคีย์ที่ได้รับอนุญาตสำหรับระบบ cryptroot ว่าชื่อของระบบ cryptroot นั้นคือ " initramfshost.example.com
" และนั่นคือ ข้อความรหัสผ่าน cryptroot คือ " secret
"
- < debian@x.ray.net
>, พุธ, 30 Sep 2009
zless /usr/share/doc/cryptsetup/README.remote.gz