私は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