Jef*_*eff 8 ssh security boot luks encrypted-partition
在以前版本的 Ubuntu 和当前版本的 Debian 中,您可以在启动时通过 SSH 解锁完全加密的系统(使用 dmcrypt 和 LUKS)。
这很简单:
在启动时,您只需通过 ssh 连接到机器,然后执行以下操作:
echo -ne "keyphrase" > /lib/cryptsetup/passfifo
Run Code Online (Sandbox Code Playgroud)
然后机器将解锁并启动加密系统。
在 Ubuntu 11.10 上使用完全相同的步骤,我可以 ssh 到机器,但/lib/cryptsetup/passfifo
不存在。
似乎无法通过 ssh 解锁系统。我不确定在哪里查看此功能是否已更改或是否已删除。
刚刚做了一些谷歌搜索,看来普利茅斯妨碍了。如果 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
Run Code Online (Sandbox Code Playgroud)
您可以在 ubuntuforums 上的这篇文章、这个启动板错误以及我从其中截取的德国帖子中阅读更多内容。