Como remover (não substituir, não criar novas) opções dos arquivos da unidade do systemd?

Como remover (não substituir, não criar novas) opções dos arquivos da unidade do systemd?

Como as linhas são removidas de um arquivo de unidade systemd padrão (sistema)? Aqui estão os detalhes:

ls -la /etc/ssh/ssh_host_*key*

Isso mostra que tenho tipos de chave de host não utilizados e indesejados. Eles não estão configurados no meu sshd_config, mas prefiro que não existam. Se eu removê-los, eles serão regenerados automaticamente.

Pelo que vejo, /usr/lib/systemd/system/sshd.serviceinclui:

Wants=sshdgenkeys.service

O conteúdo disso é mostrado abaixo com cat /usr/lib/systemd/system/sshdgenkeys.service:

[Unit]
Description=SSH Key Generation
ConditionPathExists=|!/etc/ssh/ssh_host_dsa_key
ConditionPathExists=|!/etc/ssh/ssh_host_dsa_key.pub
ConditionPathExists=|!/etc/ssh/ssh_host_ecdsa_key
ConditionPathExists=|!/etc/ssh/ssh_host_ecdsa_key.pub
ConditionPathExists=|!/etc/ssh/ssh_host_ed25519_key
ConditionPathExists=|!/etc/ssh/ssh_host_ed25519_key.pub
ConditionPathExists=|!/etc/ssh/ssh_host_rsa_key
ConditionPathExists=|!/etc/ssh/ssh_host_rsa_key.pub

[Service]
ExecStart=/usr/bin/ssh-keygen -A
Type=oneshot
RemainAfterExit=yes

Eu sei que posso substituir ou criar uma configuração de arquivo de unidade usando systemctl edit, mascomo as linhas são ConditionPathExists=|!/etc/ssh/ssh_host_dsa_keyremovidas?

O que eu quero terminar é semelhante a isto:

[Unit]
Description=SSH Key Generation
ConditionPathExists=|!/etc/ssh/ssh_host_ed25519_key
ConditionPathExists=|!/etc/ssh/ssh_host_ed25519_key.pub
ConditionPathExists=|!/etc/ssh/ssh_host_rsa_key
ConditionPathExists=|!/etc/ssh/ssh_host_rsa_key.pub

[Service]
ExecStart=/usr/bin/ssh-keygen -t rsa|ed25519 -a 32
Type=oneshot
RemainAfterExit=yes

Não tenho certeza se esse comando está correto para ssh-keygen, mas essa é a ideia geral. Quero gerar apenas dois tipos de chave de host, não todos.

Responder1

Nas unidades do systemd, as listas normalmente podem ser redefinidas em substituições, atribuindo um valor vazio. Essefunciona para condições também:

Se alguma dessas opções receber uma string vazia, a lista de condições será completamente redefinida e todas as configurações de condições anteriores (de qualquer tipo) não terão efeito.

Na sua substituição, use isto:

ConditionPathExists=
ConditionPathExists=|!/etc/ssh/ssh_host_ed25519_key
ConditionPathExists=|!/etc/ssh/ssh_host_ed25519_key.pub
ConditionPathExists=|!/etc/ssh/ssh_host_rsa_key
ConditionPathExists=|!/etc/ssh/ssh_host_rsa_key.pub

informação relacionada