これは主にDebian/Ubuntuを対象としていますが、さまざまなディストリビューションに精通しており、あるディストリビューションのソリューションを別のディストリビューションに適応させることができます。
これが私のシナリオです。ブートプロセスによってinitrdのシェル(通常はbusybox)に移動する状況がいくつかあります。最も顕著なのは、新しいカーネルリビジョンごとにドライバーを再構築する必要があるハードウェアRAIDを実行するときです。完全に起動したシステムにアクセスするのと同じ方法でレスキューシステムにアクセスできるようにしたいと思います。
Shell(s)とsshd
(OpenSSHまたはdropbear)の静的ビルドをinitrdに入れることは可能だと思い、ニーズに合わせて調整できる既存のソリューションを探していました。
(かなり長い間検索してきたので)既存の解決策がないと仮定すると、可能な場合は静的ビルドを使用する(またはライブラリを提供する)以外に何を考慮する必要がありますか? dropbearの静的ビルドをキャッシュし、/etc/initramfs-tools/hooks
を使用して、「変換された」OpenSSH sshd_config
および元のホストキーと一緒に埋め込むのは合理的ですか?
buntu 16.04には、この機能を提供することになっているdropbear-initramfs
というパッケージが含まれています。
軽量のSSH2サーバーとクライアント-initramfs統合dropbearは、SSH 2サーバーとクライアントであり、小さなメモリ環境で使用できるほど小さく設計されていますが、一般的な使用には十分な機能と安全性を備えています。
SSH 2プロトコルの最も必要な機能、およびX11や認証エージェント転送などの他の機能を実装します。
このパッケージはinitramfs統合を提供します。
上記のパッケージをインストールすることに加えて、調整する必要がある唯一の項目は次のとおりです。
DROPBEAR=y
内のコメントアウトされた/etc/initramfs-tools/conf-hooks.d/dropbear
のコメントを解除します/etc/initramfs-tools/root/.ssh/authorized_keys
を作成して入力します。このために、私は/root/.ssh
を/etc/initramfs-tools/root/.ssh
にバインドマウントすることを選択しましたupdate-initramfs -u -k all
は、すべてのinitrdイメージを再作成しましたキーを変換するために、次のコマンドを実行しました。
/usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_Host_rsa_key /etc/initramfs-tools/etc/dropbear/dropbear_rsa_Host_key
/usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_Host_dsa_key /etc/initramfs-tools/etc/dropbear/dropbear_dss_Host_key
/usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_Host_ecdsa_key /etc/initramfs-tools/etc/dropbear/dropbear_ecdsa_Host_key
注:ソースファイル名とターゲットファイル名は異なります。したがって、ここで仮定をしないでください。また、/usr/lib/dropbear
がPATH
にないため、dropbearconvert
を実行するためのフルパスを指定する必要がありました。