Làm cách nào để mở khóa hệ thống Ubuntu 11.10 được mã hóa hoàn toàn qua SSH khi khởi động?


8

Trong các phiên bản trước của Ubuntu và các phiên bản hiện tại của Debian, bạn có thể mở khóa một hệ thống được mã hóa hoàn toàn (sử dụng dmcrypt và LUKS) khi khởi động qua SSH.

Nó dễ như:

  1. Cài đặt hệ thống được mã hóa bằng đĩa cài đặt thay thế Ubuntu hoặc đĩa cài đặt Debian bình thường và chọn mã hóa hệ thống.
  2. Sau khi hệ thống được cài đặt, thêm các gói dropbear và busybox.
  3. Cập nhật initram-fs để ủy quyền cho khóa ssh của bạn.

Khi khởi động, bạn chỉ cần ssh vào máy và làm:

echo -ne "keyphrase" > /lib/cryptsetup/passfifo

Sau đó, máy sẽ mở khóa và khởi động hệ thống được mã hóa.

Sử dụng các bước chính xác tương tự trên Ubuntu 11.10, tôi có thể ssh vào máy, nhưng /lib/cryptsetup/passfifokhông tồn tại.

Dường như không có cách nào để mở khóa hệ thống qua ssh. Tôi không chắc chắn nơi để xem nếu chức năng này thay đổi hoặc nếu nó đã bị xóa.


Trên một hệ thống làm việc theo cách cũ, bạn có thể làm gì dpkg -S /lib/cryptsetup/passfifo? Tôi không thể tìm thấy bất kỳ gói nào trên gói.ubfox.com cho Natty hoặc Maverick có chứa tệp này.
maco

Câu trả lời:


4

Chỉ cần thực hiện một số googling và có vẻ như plymouth cản trở. Nếu plymouth ở đó thì khi khởi động thì cryptsetup sẽ hỏi plymouth cho mật khẩu và điều đó có nghĩa là nó không sử dụng passfifo.

Cách giải quyết tốt nhất dường như là đặt đoạn script sau vào thư mục /usr/share/initramfs-tools/hooks/Sau khi bạn đặt nó ở đó bạn có thể chmod +xvà sau đó bạn phải làm update-initramfs -u. Sau đó, bạn sẽ có thể sử dụng unlocklệnh (được tạo bởi tập lệnh bên dưới).

Điều này phụ thuộc vào bạn bằng cách sử dụng khóa ssh để đăng nhập. Nếu bạn muốn sử dụng mật khẩu thì bạn cần phải SSHUSERPASS=<username>nhập vào/etc/initramfs-tools/initramfs.conf

#!/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
            /sbin/pkill cryptroot
            /sbin/pkill -f "plymouth ask-for-pass"
            /sbin/pkill cryptsetup
            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"

    # Enable password login
    if [ -n "$SSHUSERPASS" ]
    then
        sed -n "s/^${SSHUSERPASS}:/root:/p" /etc/shadow > "${DESTDIR}/etc/shadow"
        chmod 640 "${DESTDIR}/etc/shadow"
    fi
fi

Bạn có thể đọc thêm trong bài đăng này trên ubuntuforums , lỗi launchpad nàybài đăng tiếng Đức mà tôi đã đặt biệt danh này từ .


1

cho đến khi lỗi này được giải quyết, trước tiên bạn có thể thử tiêu diệt plymouth. Thật không may, không có cách dễ dàng để xác định PID của plymouthd. Nhưng plymouth biết cách tự thoát ra :-) Vì vậy, những điều sau đây là đủ.

plymouth --quit; echo -ne "keyphrase" > /lib/cryptsetup/passfifo

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.