¿Cómo se eliminan las líneas de un archivo de unidad systemd estándar (sistema)? Aquí están los detalles:
ls -la /etc/ssh/ssh_host_*key*
Esto muestra que tengo tipos de claves de host no utilizadas y no deseadas. No están configurados en mi sshd_config
, pero prefiero que no existan en absoluto. Si los elimino, se regeneran automáticamente.
Por lo que veo, /usr/lib/systemd/system/sshd.service
incluye:
Wants=sshdgenkeys.service
El contenido de eso se muestra a continuación con 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
Sé que puedo anular o crear una configuración de archivo unitario usando systemctl edit
, pero¿Cómo se ConditionPathExists=|!/etc/ssh/ssh_host_dsa_key
eliminan las líneas?
Lo que quiero terminar es similar a esto:
[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
No estoy seguro de que ese comando sea correcto para ssh-keygen, pero esa es la idea general. Sólo quiero generar dos tipos de claves de host, no todas.
Respuesta1
En unidades systemd, las listas normalmente se pueden restablecer en anulaciones asignando un valor vacío. Estetambién funciona para las condiciones:
Si a cualquiera de estas opciones se le asigna la cadena vacía, la lista de condiciones se restablece por completo y todas las configuraciones de condiciones anteriores (de cualquier tipo) no tendrán ningún efecto.
En su anulación, use esto:
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