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.service
inclui:
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_key
removidas?
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