起動時に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?このファイルを含むNattyまたはMaverickのパッケージがpackages.ubuntu.comで見つかりません。
maco

回答:


4

少しグーグルを行ったところ、プリマスが邪魔をしているようです。plymouthが存在する場合、起動時にcryptsetupがplymouthにパスワードを要求します。つまり、passfifoを使用していません。

最善の回避策は、ディレクトリ内で以下のスクリプトを入れているように見える/usr/share/initramfs-tools/hooks/あなたができるそこにそれを入れた後はchmod +x、その後、あなたがする必要がありますupdate-initramfs -uunlockこれで、コマンド(以下のスクリプトによって作成される)を使用できるようになります。

これは、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

このバグが解決されるまで最初にプリマスを殺すことができます。残念ながら、plymouthdのPIDを決定する簡単な方法はありません。しかし、プリマスはそれ自体を終了する方法を知っています:-)したがって、以下で十分です。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.