web-dev-qa-db-ja.com

initrdでsshdを実行するための定型ソリューションはありますか?

これは主にDebian/Ubuntuを対象としていますが、さまざまなディストリビューションに精通しており、あるディストリビューションのソリューションを別のディストリビューションに適応させることができます。

これが私のシナリオです。ブートプロセスによってinitrdのシェル(通常はbusybox)に移動する状況がいくつかあります。最も顕著なのは、新しいカーネルリビジョンごとにドライバーを再構築する必要があるハードウェアRAIDを実行するときです。完全に起動したシステムにアクセスするのと同じ方法でレスキューシステムにアクセスできるようにしたいと思います。

Shell(s)とsshd(OpenSSHまたはdropbear)の静的ビルドをinitrdに入れることは可能だと思い、ニーズに合わせて調整できる既存のソリューションを探していました。

(かなり長い間検索してきたので)既存の解決策がないと仮定すると、可能な場合は静的ビルドを使用する(またはライブラリを提供する)以外に何を考慮する必要がありますか? dropbearの静的ビルドをキャッシュし、/etc/initramfs-tools/hooksを使用して、「変換された」OpenSSH sshd_configおよび元のホストキーと一緒に埋め込むのは合理的ですか?

4
0xC0000022L

buntu 16.04には、この機能を提供することになっているdropbear-initramfs というパッケージが含まれています。

軽量のSSH2サーバーとクライアント-initramfs統合dropbearは、SSH 2サーバーとクライアントであり、小さなメモリ環境で使用できるほど小さく設計されていますが、一般的な使用には十分な機能と安全性を備えています。

SSH 2プロトコルの最も必要な機能、およびX11や認証エージェント転送などの他の機能を実装します。

このパッケージはinitramfs統合を提供します。

上記のパッケージをインストールすることに加えて、調整する必要がある唯一の項目は次のとおりです。

  1. DROPBEAR=y内のコメントアウトされた/etc/initramfs-tools/conf-hooks.d/dropbearのコメントを解除します
  2. 既存のホストキーを変換します(以下を参照)
  3. /etc/initramfs-tools/root/.ssh/authorized_keysを作成して入力します。このために、私は/root/.ssh/etc/initramfs-tools/root/.sshにバインドマウントすることを選択しました
  4. 最後の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/dropbearPATHにないため、dropbearconvertを実行するためのフルパスを指定する必要がありました。

0
0xC0000022L