]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/initscripts/init.d/sshd
Merge remote-tracking branch 'ms/x86_64' into next
[ipfire-2.x.git] / src / initscripts / init.d / sshd
index eff98a9f2a3f2d6391cc8b27c5e7979c15207f8e..7b4092d38dd62bc6c3381fb6561b57410cdb00dd 100644 (file)
 
 case "$1" in
     start)
-               [ -e "/var/ipfire/remote/enablessh" ] || exit 0 # SSH is not enabled
+       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..."
-        # Also prevent ssh from being killed by out of memory conditions
         loadproc /usr/sbin/sshd 
-        sleep 3
-        echo "-16" >/proc/`cat /var/run/sshd.pid`/oom_adj
+
+        # 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)