引导时如何通过SSH解锁完全加密的Ubuntu 11.10系统?


8

在早期版本的Ubuntu和当前版本的Debian中,您可以在启动时通过SSH解锁完全加密的系统(使用dmcrypt和LUKS)。

就像这样简单:

  1. 使用Ubuntu备用安装程序磁盘或普通Debian安装程序磁盘安装加密的系统,然后选择对系统进行加密。
  2. 安装系统后,添加dropbear和busybox软件包。
  3. 更新initram-fs以授权您的ssh密钥。

在启动时,您只需SSH到计算机,然后执行以下操作:

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

然后,计算机将解锁并启动加密的系统。

在Ubuntu 11.10上使用完全相同的步骤,我可以SSH到机器上,但是/lib/cryptsetup/passfifo不存在。

似乎没有办法通过ssh解锁系统。我不确定在哪里可以看到此功能是否已更改或已删除。


在使用旧方法的系统上,您可以这样做dpkg -S /lib/cryptsetup/passfifo吗?我在package.ubuntu.com上找不到包含该文件的Natty或Maverick的任何软件包。
maco 2011年

Answers:


4

刚进行了一些谷歌搜索,看来普利茅斯妨碍了比赛。如果存在普利茅斯,则在启动时,cryptsetup会向普利茅斯询问密码,这意味着它没有使用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

您可以在ubuntuforums上的这篇文章中阅读更多内容这个启动板错误以及从中切入大部分内容德语文章


1

此错误解决之前,您可以尝试先杀死普利茅斯。不幸的是,没有简单的方法来确定普利茅斯的PID。但是普利茅斯知道如何戒烟:-)因此,下面的内容就足够了。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.