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