시스템 단위 파일에서 옵션을 제거(재정의하지 않고 새로 생성하지 않음)하는 방법은 무엇입니까?

시스템 단위 파일에서 옵션을 제거(재정의하지 않고 새로 생성하지 않음)하는 방법은 무엇입니까?

표준(시스템) 시스템 단위 파일에서 줄을 어떻게 제거합니까? 자세한 내용은 다음과 같습니다.

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

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

이러한 옵션 중 하나에 빈 문자열이 할당되면 조건 목록이 완전히 재설정되고 모든 종류의 이전 조건 설정이 적용되지 않습니다.

재정의에서 다음을 사용하십시오.

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

관련 정보