Gerar chaves ssh no systemd-nspawn

0

Eu escrevi alguns scripts para baixar, personalizar e preparar uma imagem Raspbian para o Raspberry Pi. Como o sistema de arquivos raiz será montado em somente leitura, preciso criar as chaves ssh ANTES de executar o destino pela primeira vez.

Descobri que a geração de chaves ssh é gerenciada pelo serviço /etc/systemd/system/multi-user.target.wants/regenerate_ssh_host_keys.service (a propósito, o mesmo arquivo exato também é colocado sob /lib/systemd/system/regenerate_ssh_host_keys.service ).

Aqui está o seu conteúdo:

[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

Por isso, vou executar esses comandos dentro do contêiner nspawn para gerar as chaves durante a configuração.

O problema é que ele procura por /dev/hwrng e /dev/urandom , mas eu não os tenho neste estágio. Além disso, não consigo desabilitar o serviço usando systemctl porque dentro do container não tenho dbus em execução. Existe outra maneira de desativá-lo? Eu não quero remover o arquivo em si, se possível ...

    
por Mark 07.09.2017 / 21:14

1 resposta

1

Você pode mask do serviço manualmente removendo o arquivo /etc/systemd/... e criando um link simbólico de

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

para /dev/null em vez de um link simbólico para

/lib/systemd/system/regenerate_ssh_host_keys.service

Assim:

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

Quando você desmascara um serviço, ele cria o link simbólico de volta para o arquivo em /usr/lib/systemd/system/filename . A seguir, como você pode desmascará-lo:

systemctl umask regenerate_ssh_host_keys.service

Ou recrie o link simbólico.

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

PS: Lembre-se de excluir o link simbólico para /dev/null

    
por 07.09.2017 / 21:30