I am running a simple service to tweak SSHD on first boot (the script is at the
bottom of this mail). This is on Debian Bookworm incase it makes any difference.
If I configure my service as:
[Unit]
Description=ITS Generate SSH Server Keys
Wants=ssh.service
Before=ssh.service
[Service]
ExecStart=/usr/bin/bash /path/to/script
Type=oneshot
[Install]
WantedBy=multi-user.target
It never completes. Logging into the server console, "dpkg-reconfigure" just
seems to sit there in the backround forever and so SSHD never gets
restarted/reloaded.
Meanwhile, if I change the [Service] definition to:
[Service]
ExecStart=/usr/bin/bash /path/to/script
RemainAfterExit=true
Type=exec
"dpkg-reconfigure" appears to do its job correctly, and as a result SSHD gets
restarted/reloaded, I can login via SSH and everything is great.
I just don't understand why its doing that.
Laura
My script:
#!/usr/bin/env bash
set -uo pipefail
HAS_RUN_FLAG="/path/to/my.flag"
if [[ ! -f "${HAS_RUN_FLAG}" ]];then
sed -i'' 's/^Subsystem\s*sftp/#&/' /etc/ssh/sshd_config
dpkg-reconfigure openssh-server
touch "${HAS_RUN_FLAG}"
fi