如何在启动时通过 SSH 解锁完全加密的 Ubuntu 11.10 系统?

如何在启动时通过 SSH 解锁完全加密的 Ubuntu 11.10 系统?

在以前的 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 解锁系统。我不确定在哪里可以查看此功能是否已更改或是否已被删除。

答案1

刚刚在谷歌上搜索了一下,发现 plymouth 似乎妨碍了。如果 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

您可以在ubuntuforums 上的这篇文章这个启动板错误我从德国邮报偷了大部分内容

答案2

直到这个错误问题解决后,您可以尝试先终止 plymouth。不幸的是,没有简单的方法可以确定 plymouthd 的 PID。但 plymouth 知道如何自行退出 :-) 因此,下面的操作应该足够了。

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

相关内容