저는 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