Files
bpfire/src/initscripts/system/sshd
Michael Tremer 675c9ca558 ssh: Ignore any errors when stopping daemon
The SSH init script only kills the main daemon which leads to any child
processes (for remaining connections) being untouched.

killproc returns 4 (unknown error) when not all processes were killed
which is not intended here. Therefore we ignore the error and do not
pause the shut down process for a minute.

Fixes: #12544
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2021-01-13 11:12:03 +00:00

65 lines
1.4 KiB
Bash

#!/bin/sh
# Begin $rc_base/init.d/sshd
# Based on sysklogd script from LFS-3.1 and earlier.
# Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org
#$LastChangedBy: bdubbs $
#$Date: 2006-04-15 17:34:16 -0500 (Sat, 15 Apr 2006) $
. /etc/sysconfig/rc
. $rc_functions
case "$1" in
start)
for algo in rsa ecdsa ed25519; do
keyfile="/etc/ssh/ssh_host_${algo}_key"
# If the key already exists, there is nothing to do.
[ -e "${keyfile}" ] && continue
boot_mesg "Generating SSH key (${algo})..."
ssh-keygen -qf "${keyfile}" -N '' -t ${algo}
evaluate_retval
done
[ -e "/var/ipfire/remote/enablessh" ] || exit 0 # SSH is not enabled
boot_mesg "Starting SSH Server..."
loadproc -f /usr/sbin/sshd
# Also prevent ssh from being killed by out of memory conditions
(
sleep 3
pid=$(cat /var/run/sshd.pid 2>/dev/null)
[ -n "${pid}" ] && echo "-16" > "/proc/${pid}/oom_score_adj"
) &
;;
stop)
boot_mesg "Stopping SSH Server..."
killproc -p "/var/run/sshd.pid" /usr/sbin/sshd || true
;;
reload)
boot_mesg "Reloading SSH Server..."
reloadproc /usr/sbin/sshd
;;
restart)
$0 stop
sleep 1
$0 start
;;
status)
statusproc /usr/sbin/sshd
;;
*)
echo "Usage: $0 {start|stop|reload|restart|status}"
exit 1
;;
esac
# End $rc_base/init.d/sshd