如何從標準(系統)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