부팅시 SSH를 통해 완전히 암호화 된 Ubuntu 11.10 시스템의 잠금을 해제하는 방법은 무엇입니까?


8

이전 버전의 Ubuntu 및 현재 버전의 Debian에서는 SSH를 통해 부팅시 완전 암호화 된 시스템 (dmcrypt 및 LUKS 사용)을 잠금 해제 할 수 있습니다.

다음과 같이 쉽습니다.

  1. Ubuntu 대체 설치 프로그램 디스크 또는 일반 데비안 설치 프로그램 디스크를 사용하여 암호화 된 시스템 설치 및 시스템 암호화 선택.
  2. 시스템이 설치된 후 dropbear 및 busybox 패키지를 추가하십시오.
  3. ssh 키를 인증하기 위해 initram-fs 업데이트

부팅 할 때 컴퓨터로 ssh하고 다음을 수행합니다.

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

그런 다음 머신은 암호화 된 시스템을 잠금 해제하고 부팅합니다.

우분투 11.10에서 똑같은 단계를 사용하여 머신에 ssh 할 수 /lib/cryptsetup/passfifo는 있지만 존재하지 않습니다.

ssh를 통해 시스템을 잠금 해제 할 수있는 방법이 없습니다. 이 기능이 변경되었는지 또는 제거되었는지 확인할 위치를 잘 모르겠습니다.


이전 방식으로 작동했던 시스템에서 할 수 dpkg -S /lib/cryptsetup/passfifo있습니까? 이 파일이 포함 된 Natty 또는 Maverick의 packages.ubuntu.com에서 패키지를 찾을 수 없습니다.
maco

답변:


4

방금 인터넷 검색을 수행하면 플리머스가 방해를받는 것처럼 보입니다. plymouth가 있으면 부팅시 cryptsetup에서 plymouth에 암호를 묻습니다. 이는 passfifo를 사용하지 않음을 의미합니다.

가장 좋은 해결 방법은 디렉토리에 다음 스크립트를 가하고있는 것으로 보인다 /usr/share/initramfs-tools/hooks/당신이 거기에 당신이 할 수있는 넣어 한 후에 chmod +x다음은에 있습니다 update-initramfs -u. 그런 다음 unlock아래 스크립트로 작성된 명령 을 사용할 수 있어야합니다 .

ssh 키를 사용하여 로그인해야합니다. 그런 다음 암호를 사용하려는 경우에는 둘 필요 SSHUSERPASS=<username>/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

이 게시물에서 우분투 포럼 , 이 런치 패드 버그내가 가장 많이 인용독일 게시물 에 대한 자세한 내용을 읽을 수 있습니다 .


1

이 버그 가 해결 될 때까지 먼저 플리머스를 죽이십시오. 불행히도, plymouthd의 PID를 결정하는 쉬운 방법은 없습니다. 그러나 plymouth는 스스로 종료하는 방법을 알고 있습니다 :-) 따라서 다음과 같이 충분합니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.