Wie werden Zeilen aus einer Standard-(System-)Systemd-Unit-Datei entfernt? Hier sind die Details:
ls -la /etc/ssh/ssh_host_*key*
Dies zeigt, dass ich ungenutzte und unerwünschte Hostschlüsseltypen habe. Sie sind in meinem nicht konfiguriert sshd_config
, aber ich ziehe es vor, dass sie überhaupt nicht existieren. Wenn ich sie entferne, werden sie automatisch neu generiert.
Soweit ich sehe, /usr/lib/systemd/system/sshd.service
sind darunter:
Wants=sshdgenkeys.service
Der Inhalt davon wird unten mit cat /usr/lib/systemd/system/sshdgenkeys.service angezeigt:
[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
Ich weiß, dass ich eine Unit-Dateieinstellung mit überschreiben oder erstellen kann systemctl edit
, aberwie werden zeilen wie ConditionPathExists=|!/etc/ssh/ssh_host_dsa_key
entfernt?
Am Ende möchte ich ungefähr Folgendes erreichen:
[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
Ich bin nicht sicher, ob dieser Befehl für ssh-keygen richtig ist, aber das ist die Grundidee. Ich möchte nur zwei Hostschlüsseltypen generieren, nicht alle.
Antwort1
In systemd-Einheiten können Listen in Overrides normalerweise durch die Zuweisung eines leeren Wertes zurückgesetzt werden. Diesfunktioniert auch für Bedingungen:
Wenn einer dieser Optionen die leere Zeichenfolge zugewiesen wird, wird die Liste der Bedingungen vollständig zurückgesetzt. Alle vorherigen Bedingungseinstellungen (jeder Art) haben keine Auswirkung.
Verwenden Sie in Ihrer Überschreibung Folgendes:
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