システム単位のファイルからオプションを削除する(上書きせずに新しく作成せずに)方法は?

システム単位のファイルからオプションを削除する(上書きせずに新しく作成せずに)方法は?

標準(システム)システム単位ファイルから行を削除するには?詳細は次のとおりです。

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に適しているかどうかはわかりませんが、これは一般的な考えです。すべてのホストキータイプではなく、2つのホストキータイプのみを生成したいと思います。

ベストアンサー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

おすすめ記事