initramfsでのsshログインによるrootfsのロック解除
initramfsがマウントされた状態で実行中に、sshを使用してブートシステムにログインすることにより、リモートからのブートアップ時にrootfsのロックを解除できます。
セットアップ
リモートロック解除が機能するには、initramfsをビルドする前に次のパッケージをインストールする必要があります。 dropbear
busybox
このファイルに/etc/initramfs-tools/initramfs.conf
は、initramfsの構築時に使用される構成オプションが含まれています。これは、含まれている必要がありますBUSYBOX=y
のinitramfsにインストールbusyboxのを持っている(busyboxのパッケージがインストールされている場合、これがデフォルトとして設定されている)、および含有すべきではない
DROPBEAR=n
のinitramfsににdropbearのインストールを無効と思われます。に設定するとDROPBEAR=y
、いずれの場合でもdropbearがインストールされます。DROPBEAR
設定されていない場合
、dropbearは既存のcryptrootセットアップの場合にのみインストールされます。
initramfsに使用されるホストキーはdropbear_dss_host_key
および
です。dropbear_rsa_host_key
両方ともにあり/etc/initramfs-tools/etc/dropbear/
ます。initramfsのコンパイル時に存在しない場合は、自動的に作成されます。手動で作成するコマンドは次のとおりです。
dropbearkey -t dss -f /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
dropbearkey -t rsa -f /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
initramfsは暗号化されないため、公開鍵認証が想定されます。そのために使用されるキーはから取得され
/etc/initramfs-tools/root/.ssh/authorized_keys
ます。initramfsのコンパイル時にこのファイルが存在しない場合は、作成
/etc/initramfs-tools/root/.ssh/id_rsa.pub
されて追加されます。後者のファイルも存在しない場合は、自動的に生成されます-後でinitramfsにログインする必要がある/etc/initramfs-tools/root/.ssh/id_rsa
(またはid_rsa.dropbear
dropbear形式で必要な場合)一致する秘密キーが見つかります。以下は、それぞれの手順を手動で実行するコマンドです。
キーを作成するには(dropbear形式):
dropbearkey -t rsa -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear
キーをdropbear形式からopenssh形式に変換するには:
/usr/lib/dropbear/dropbearconvert dropbear openssh \
/etc/initramfs-tools/root/.ssh/id_rsa.dropbear \
/etc/initramfs-tools/root/.ssh/id_rsa
公開鍵を抽出するには:
dropbearkey -y -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear | \
grep "^ssh-rsa " > /etc/initramfs-tools/root/.ssh/id_rsa.pub
authorized_keysファイルに公開鍵を追加するには:
cat /etc/initramfs-tools/root/.ssh/id_rsa.pub >> /etc/initramfs-tools/root/.ssh/authorized_keys
dhcpを使用して一部のインターフェイスを設定DEVICE=
する/etc/initramfs-tools/initramfs.conf
場合は、設定
で十分です。initramfsはip=
カーネルパラメーターも尊重する必要があります。grubを使用する場合は、おそらく/boot/grub/menu.lst
' # kopt=
'行で設定するか、特定の ' kernel
'行に追加することをお勧めします。ip=
カーネルパラメータがで文書化されているDocumentation/nfsroot.txt
カーネルのソースツリーに。
課題
update-initramfs
設定を変更したときに実行することを忘れないでください!
sshデーモンの十分なエントロピーを収集することが問題になる場合があります。十分なエントロピーが取得されるまで、sshデーモンの起動が遅れる場合があります。これは、起動プロセスに対して非ブロッキングであるため、コンソールにいるときは、sshdが起動を完了するのを待つ必要はありません。
ロック解除手順
リモートからロックを解除するには、次のようなことができます。
ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \
-i "~/id_rsa.initramfs" root@initramfshost.example.com \
"echo -ne \"secret\" >/lib/cryptsetup/passfifo"
この例では、暗号ルートシステムのホストキーを保持する追加known_hosts
ファイル " ~/.ssh/known_hosts.initramfs
"、暗号ルートシステムの~/id_rsa.initramfs
認証キーを保持するファイル " "、暗号ルートシステムの名前が " initramfshost.example.com
"、およびcryptrootパスフレーズは「secret
」です
-< debian@x.ray.net
>、水、2009年9月30日
zless /usr/share/doc/cryptsetup/README.remote.gz