Как можно разблокировать полностью зашифрованную систему Ubuntu 11.10 через SSH при загрузке?
В предыдущих версиях Ubuntu и текущих версиях Debian вы можете разблокировать полностью зашифрованную систему (используя dmcrypt и LUKS) во время загрузки через SSH.
Это было так просто, как:
- Установка зашифрованной системы с использованием альтернативного установочного диска Ubuntu или обычного установочного диска Debian и выбор шифрования системы.
- После установки системы добавьте пакеты dropbear и busybox.
- Обновление initram-fs для авторизации вашего ключа ssh.
Во время загрузки вы просто подключитесь к компьютеру по ssh и выполните:
echo -ne "keyphrase" > /lib/cryptsetup/passfifo
Затем машина разблокирует и загрузит зашифрованную систему.
Используя те же самые шаги в Ubuntu 11.10, я могу подключиться к машине по ssh, но /lib/cryptsetup/passfifo
не существует
Кажется, нет никакого способа разблокировать систему через ssh. Я не уверен, где посмотреть, если эта функциональность изменилась или была удалена.
2 ответа
Только что сделал поиск в Google, и кажется, что Плимут мешает. Если 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, об этой ошибке на панели запуска и немецком посте, из которого я получил большую часть этого.
Пока эта ошибка не устранена, вы можете сначала попытаться убить Плимута. К сожалению, нет простого способа определить PID Plymouthd. Но Плимут знает, как выйти из себя:-) Так что следующего должно быть достаточно.
plymouth --quit; echo -ne "keyphrase" > /lib/cryptsetup/passfifo