Jak odblokować w pełni zaszyfrowany system Ubuntu 11.10 przez SSH podczas rozruchu?

8

W poprzednich wersjach Ubuntu i bieżących wersjach Debiana można odblokować w pełni zaszyfrowany system (używając dmcrypt i LUKS) podczas uruchamiania za pośrednictwem SSH.

To było tak proste jak:

  1. Instalowanie zaszyfrowanego systemu przy użyciu alternatywnego dysku instalacyjnego Ubuntu lub normalnego dysku instalacyjnego Debiana i wybranie szyfrowania systemu.
  2. Po zainstalowaniu systemu dodawanie pakietów dropbear i busybox.
  3. Aktualizacja initram-fs w celu autoryzacji twojego klucza ssh.

W czasie uruchamiania wystarczy ssh na maszynie i wykonaj:

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

Maszyna następnie odblokuje i uruchomi zaszyfrowany system.

Wykonując dokładnie te same kroki na Ubuntu 11.10, mogę ssh do komputera, ale /lib/cryptsetup/passfifonie istnieje.

Wygląda na to, że nie ma możliwości odblokowania systemu przez ssh. Nie jestem pewien, gdzie szukać, aby sprawdzić, czy ta funkcjonalność uległa zmianie lub czy została usunięta.

Jeff
źródło
Czy możesz to zrobić w systemie, który działał w stary sposób dpkg -S /lib/cryptsetup/passfifo? Nie mogę znaleźć żadnych pakietów na packages.ubuntu.com dla Natty lub Maverick zawierających ten plik.
maco,

Odpowiedzi:

4

Właśnie zrobiłem trochę googlingu i wygląda na to, że Plymouth przeszkadza. Jeśli Plymouth jest tam, to po uruchomieniu, cryptsetup poprosi Plymouth o hasło, co oznacza, że ​​nie używa passfifo.

Najlepszym obejściem wydaje się umieszczenie następującego skryptu w katalogu /usr/share/initramfs-tools/hooks/Po umieszczeniu go tam możesz chmod +xi musisz update-initramfs -u. Powinieneś wtedy móc użyć unlockpolecenia (które jest tworzone przez poniższy skrypt).

To zależy od Ciebie, używając loginu ssh do zalogowania się. Jeśli chcesz używać hasła, a następnie należy umieścić SSHUSERPASS=<username>w/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

Możesz przeczytać więcej w tym poście na temat ubuntuforums , tego błędu startera i niemieckiego postu, z którego większość tego napisałem .

Hamish Downer
źródło
1

dopóki ten błąd nie zostanie rozwiązany, możesz spróbować zabić Plymoutha. Niestety nie ma łatwego sposobu ustalenia PID plymouthd. Ale Plymouth wie, jak się rzucić :-) Tak więc poniższe informacje powinny wystarczyć.

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

Frederick Nord
źródło