mở khóa rootfs thông qua đăng nhập ssh trong initramfs
Bạn có thể mở khóa rootfs của mình khi khởi động từ xa, sử dụng ssh để đăng nhập vào hệ thống khởi động trong khi nó đang chạy với initramfs được gắn.
Thiết lập
Để mở khóa từ xa để hoạt động, các gói sau phải được cài đặt trước khi xây dựng initramfs: dropbear
busybox
Tệp /etc/initramfs-tools/initramfs.conf
giữ các tùy chọn cấu hình được sử dụng khi xây dựng initramfs. Nó nên chứa BUSYBOX=y
(cái này được đặt làm mặc định khi gói busybox được cài đặt) để cài đặt busybox vào initramfs, và không nên chứa
DROPBEAR=n
, điều này sẽ vô hiệu hóa việc cài đặt dropbear cho initramfs. Nếu được đặt thành DROPBEAR=y
, dropbear sẽ được cài đặt trong mọi trường hợp; nếu hoàn toàn
DROPBEAR
không được thiết lập, thì dropbear sẽ chỉ được cài đặt trong trường hợp thiết lập tiền điện tử hiện có.
Các khóa máy chủ được sử dụng cho initramfs là dropbear_dss_host_key
và
dropbear_rsa_host_key
, cả hai đều nằm trong /etc/initramfs-tools/etc/dropbear/
. Nếu chúng không tồn tại khi initramfs được biên dịch, chúng sẽ được tạo tự động. Sau đây là các lệnh để tạo chúng bằng tay:
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
Vì initramfs sẽ không được mã hóa, nên xác thực khóa công khai. (Các) khóa được sử dụng cho việc đó sẽ được lấy từ
/etc/initramfs-tools/root/.ssh/authorized_keys
. Nếu tệp này không tồn tại khi initramfs được biên dịch, nó sẽ được tạo và
/etc/initramfs-tools/root/.ssh/id_rsa.pub
sẽ được thêm vào nó. Nếu tệp sau không tồn tại, nó sẽ được tạo tự động - bạn sẽ tìm thấy khóa riêng phù hợp mà sau này bạn sẽ cần phải đăng nhập vào initramfs bên dưới /etc/initramfs-tools/root/.ssh/id_rsa
(hoặc id_rsa.dropbear
trong trường hợp bạn cần nó ở định dạng dropbear). Sau đây là các lệnh để thực hiện các bước tương ứng theo cách thủ công:
Để tạo khóa (ở định dạng dropbear):
dropbearkey -t rsa -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear
Để chuyển đổi khóa từ định dạng dropbear sang định dạng openssh:
/usr/lib/dropbear/dropbearconvert dropbear openssh \
/etc/initramfs-tools/root/.ssh/id_rsa.dropbear \
/etc/initramfs-tools/root/.ssh/id_rsa
Để giải nén khóa công khai:
dropbearkey -y -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear | \
grep "^ssh-rsa " > /etc/initramfs-tools/root/.ssh/id_rsa.pub
Để thêm khóa công khai vào tệp ủy quyền:
cat /etc/initramfs-tools/root/.ssh/id_rsa.pub >> /etc/initramfs-tools/root/.ssh/authorized_keys
Trong trường hợp bạn muốn một số giao diện được cấu hình bằng dhcp, cài đặt
DEVICE=
trong /etc/initramfs-tools/initramfs.conf
là đủ. Các initramfs cũng nên tôn vinh ip=
tham số kernel. Trong trường hợp bạn sử dụng grub, có lẽ bạn có thể muốn đặt nó vào /boot/grub/menu.lst
, trong dòng ' # kopt=
' hoặc được thêm vào kernel
(các) dòng cụ thể . Các ip=
tham số hạt nhân được ghi nhận ở Documentation/nfsroot.txt
trong cây mã nguồn kernel.
Các vấn đề
Đừng quên chạy update-initramfs
khi bạn thay đổi cấu hình để làm cho nó hiệu quả!
Thu thập đủ entropy cho daemon ssh đôi khi dường như là một vấn đề. Khởi động của daemon ssh có thể bị trì hoãn cho đến khi đủ entropy được lấy. Điều này không chặn cho quá trình khởi động, vì vậy khi bạn ở trong bảng điều khiển, bạn sẽ không phải đợi sshd hoàn thành quá trình khởi động.
Quy trình mở khóa
Để mở khóa từ xa, bạn có thể làm một cái gì đó như thế này:
ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \
-i "~/id_rsa.initramfs" root@initramfshost.example.com \
"echo -ne \"secret\" >/lib/cryptsetup/passfifo"
Ví dụ này giả định rằng bạn có một known_hosts
tệp bổ sung " ~/.ssh/known_hosts.initramfs
" chứa khóa máy chủ của hệ thống mật mã, rằng bạn có một tệp " ~/id_rsa.initramfs
" chứa khóa ủy quyền cho hệ thống tiền điện tử, rằng tên của hệ thống tiền điện tử là " initramfshost.example.com
" và đó là mật khẩu mật mã là " secret
"
- < debian@x.ray.net
>, thứ tư, ngày 30 tháng 9 năm 2009
zless /usr/share/doc/cryptsetup/README.remote.gz