blob: 34ba0f84600a69e793aa168c376de02235eadbf7 [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001#! /bin/sh
2set -e
3
4PIDFILE=/var/run/sshd.pid
5
6# source function library
7. /etc/init.d/functions
8
9# /etc/init.d/ssh: start and stop the OpenBSD "secure shell" daemon
10
11test -x /usr/sbin/sshd || exit 0
12( /usr/sbin/sshd -\? 2>&1 | grep -q OpenSSH ) 2>/dev/null || exit 0
13
14# /etc/default/ssh may set SYSCONFDIR and SSHD_OPTS
15if test -f /etc/default/ssh; then
16 . /etc/default/ssh
17fi
18
19[ -z "$SYSCONFDIR" ] && SYSCONFDIR=/etc/ssh
20mkdir -p $SYSCONFDIR
21
Patrick Williamsc124f4f2015-09-15 14:41:29 -050022check_for_no_start() {
23 # forget it if we're trying to start, and /etc/ssh/sshd_not_to_be_run exists
24 if [ -e $SYSCONFDIR/sshd_not_to_be_run ]; then
25 echo "OpenBSD Secure Shell server not in use ($SYSCONFDIR/sshd_not_to_be_run)"
26 exit 0
27 fi
28}
29
30check_privsep_dir() {
31 # Create the PrivSep empty dir if necessary
32 if [ ! -d /var/run/sshd ]; then
33 mkdir /var/run/sshd
34 chmod 0755 /var/run/sshd
35 fi
36}
37
38check_config() {
Patrick Williamsc0f7c042017-02-23 20:41:17 -060039 /usr/sbin/sshd -t $SSHD_OPTS || exit 1
Patrick Williamsc124f4f2015-09-15 14:41:29 -050040}
41
Patrick Williamsc124f4f2015-09-15 14:41:29 -050042export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
43
44case "$1" in
45 start)
46 check_for_no_start
47 echo "Starting OpenBSD Secure Shell server: sshd"
Brad Bishop6e60e8b2018-02-01 10:27:11 -050048 @LIBEXECDIR@/sshd_check_keys
Patrick Williamsc124f4f2015-09-15 14:41:29 -050049 check_privsep_dir
50 start-stop-daemon -S -p $PIDFILE -x /usr/sbin/sshd -- $SSHD_OPTS
51 echo "done."
52 ;;
53 stop)
54 echo -n "Stopping OpenBSD Secure Shell server: sshd"
55 start-stop-daemon -K -p $PIDFILE -x /usr/sbin/sshd
56 echo "."
57 ;;
58
59 reload|force-reload)
60 check_for_no_start
Brad Bishop6e60e8b2018-02-01 10:27:11 -050061 @LIBEXECDIR@/sshd_check_keys
Patrick Williamsc124f4f2015-09-15 14:41:29 -050062 check_config
63 echo -n "Reloading OpenBSD Secure Shell server's configuration"
64 start-stop-daemon -K -p $PIDFILE -s 1 -x /usr/sbin/sshd
65 echo "."
66 ;;
67
68 restart)
Brad Bishop6e60e8b2018-02-01 10:27:11 -050069 @LIBEXECDIR@/sshd_check_keys
Patrick Williamsc124f4f2015-09-15 14:41:29 -050070 check_config
71 echo -n "Restarting OpenBSD Secure Shell server: sshd"
72 start-stop-daemon -K -p $PIDFILE --oknodo -x /usr/sbin/sshd
73 check_for_no_start
74 check_privsep_dir
75 sleep 2
76 start-stop-daemon -S -p $PIDFILE -x /usr/sbin/sshd -- $SSHD_OPTS
77 echo "."
78 ;;
79
80 status)
81 status /usr/sbin/sshd
82 exit $?
83 ;;
84
85 *)
86 echo "Usage: /etc/init.d/ssh {start|stop|status|reload|force-reload|restart}"
87 exit 1
88esac
89
90exit 0