Linux
如何從 systemd 單元文件中刪除(不覆蓋,不創建新)選項?
如何從標準(系統)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 是否正確,但這是一般的想法。我只想生成兩種主機密鑰類型,而不是全部。
在 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