Как удалить (не переопределить и не создать новые) параметры из файлов модулей systemd?

Как удалить (не переопределить и не создать новые) параметры из файлов модулей systemd?

Как удаляются строки из стандартного (системного) файла systemd unit? Вот подробности:

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

Это показывает, что у меня есть неиспользуемые и нежелательные типы ключей хоста. Они не настроены в моем sshd_config, но я предпочитаю, чтобы их вообще не было. Если я их удалю, они будут автоматически сгенерированы заново.

Из того, что я вижу, /usr/lib/systemd/system/sshd.serviceсюда входит:

Wants=sshdgenkeys.service

Содержимое этого показано ниже с помощью 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

Я знаю, что могу переопределить или создать настройку файла модуля с помощью systemctl edit, нокак ConditionPathExists=|!/etc/ssh/ssh_host_dsa_keyудаляются такие строки?

Я хочу получить что-то вроде этого:

[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

Я не уверен, что эта команда верна для ssh-keygen, но это общая идея. Я хочу сгенерировать только два типа ключей хоста, а не все.

решение1

В модулях systemd списки обычно можно сбросить в переопределениях, присвоив пустое значение. Этоработает также для условий:

Если любому из этих параметров присвоена пустая строка, список условий полностью сбрасывается, все предыдущие настройки условий (любого вида) не будут иметь никакого эффекта.

В вашем переопределении используйте это:

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

Связанный контент