시스템 단위 파일에서 옵션을 제거(덮어쓰지 않고 새로 만들지 않고)하는 방법은 무엇입니까?

시스템 단위 파일에서 옵션을 제거(덮어쓰지 않고 새로 만들지 않고)하는 방법은 무엇입니까?

표준(시스템) 시스템 단위 파일에서 줄을 제거하는 방법은 무엇입니까? 세부사항은 다음과 같습니다:

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

시스템 단위에서는 일반적으로 null 값을 할당하여 목록을 재설정할 수 있습니다. 이것조건에도 적용됩니다:

이러한 옵션에 대해 빈 문자열을 지정하면 조건 목록이 완전히 재설정되고 모든 유형의 이전 조건 설정이 모두 유효하지 않게 됩니다.

오버레이에서 다음을 사용하십시오.

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

관련 정보