systemd-nspawnでSSHキーを生成する

systemd-nspawnでSSHキーを生成する

私はRaspberry Pi用のRaspbianイメージをダウンロード、カスタマイズ、準備するためのいくつかのスクリプトを作成しました。ルートファイルシステムは読み取り専用でマウントされるため、ターゲットを最初に実行する前にSSHキーを生成する必要があります。

SSHキーの生成がサービスによって処理されることがわかりました/etc/systemd/system/multi-user.target.wants/regenerate_ssh_host_keys.service(しかし、まったく同じファイルも下に配置されています/lib/systemd/system/regenerate_ssh_host_keys.service)。

その内容は次のとおりです。

[Unit]
Description=Regenerate SSH host keys
Before=ssh.service

[Service]
Type=oneshot
ExecStartPre=-/bin/dd if=/dev/hwrng of=/dev/urandom count=1 bs=4096
ExecStartPre=-/bin/sh -c "/bin/rm -f -v /etc/ssh/ssh_host_*_key*"
ExecStart=/usr/bin/ssh-keygen -A -v
ExecStartPost=/bin/systemctl disable regenerate_ssh_host_keys

[Install]
WantedBy=multi-user.target

したがって、nspawnコンテナ内でこれらのコマンドを実行して、構成中にキーを生成します。

問題はそれが探しているということですが/dev/hwrng/dev/urandom現段階ではそれを持っていません。また、コンテナ内でdbusが実行されていないため、systemctlを使用してサービスを無効にすることはできません。無効にする他の方法はありますか?可能であれば、ファイル自体を削除したくありません...

ベストアンサー1

ファイルを削除し、シンボリックリンクを作成してmask手動で提供することができます。/etc/systemd/...

/etc/systemd/system/multi-user.target.wants/regenerate_ssh_host_keys.service

/dev/nullシンボリックリンクの代わりに

/lib/systemd/system/regenerate_ssh_host_keys.service

このように:

ln -s /etc/systemd/system/multi-user.target.wants/regenerate_ssh_host_keys.service /dev/null

サービスのブロックを解除すると、の返却が生成されます/usr/lib/systemd/system/filename。ブロックを解除する方法は次のとおりです。

systemctl umask regenerate_ssh_host_keys.service

または、シンボリックリンクを再作成してください。

ln -s /etc/systemd/system/multi-user.target.wants/regenerate_ssh_host_keys.service /lib/systemd/system/regenerate_ssh_host_keys.service

PS:シンボリックリンクを削除することを忘れないでください/dev/null

おすすめ記事