# felhom-sshd.service (TASK H1) — install as /etc/systemd/system/felhom-sshd.service. # # The dedicated OOB sshd instance: a SECOND sshd on a claimed non-22 port, COEXISTING with the # customer's/stock sshd on :22 (never touched). Config is AGENT-RENDERED at /etc/felhom-sshd/sshd_config # (Port from the agent's claim); the agent reloads on change (never restart-on-change [SF-2]). # # CRITICAL [SF-1]: this unit MUST NOT declare `RuntimeDirectory=` — that directive (value `sshd`) # removed the SHARED /run/sshd and broke the stock sshd live (SPIKE-felhom-sshd §8). /run/sshd is # guaranteed by G1 (tmpfiles + watchdog); the ExecStartPre mkdir is a harmless extra guarantee. The # host-install RuntimeDirectory guard will REJECT this unit if the directive is ever added. [Unit] Description=Felhom OOB sshd (dedicated instance, agent-managed; H1) After=network.target [Service] Type=notify ExecStartPre=-/usr/bin/mkdir -p /run/sshd ExecStartPre=/usr/sbin/sshd -t -f /etc/felhom-sshd/sshd_config ExecStart=/usr/sbin/sshd -D -f /etc/felhom-sshd/sshd_config # Config-change path: validate then HUP — a bad reload is REFUSED and the running daemon SURVIVES # [SF-2]. The agent always writes→sshd -t→reload; it never `restart`s on a config change. ExecReload=/usr/sbin/sshd -t -f /etc/felhom-sshd/sshd_config ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure [Install] WantedBy=multi-user.target