如何从标准(系统)systemd 单元文件中删除行?详细信息如下:
ls -la /etc/ssh/ssh_host_*key*
这表明我有未使用和不需要的主机密钥类型。它们没有在 my 中配置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