xref: /freebsd/crypto/openssh/contrib/redhat/sshd.init (revision f0adf7f5cdd241db2f2c817683191a6ef64a4e95)
1#!/bin/bash
2#
3# Init file for OpenSSH server daemon
4#
5# chkconfig: 2345 55 25
6# description: OpenSSH server daemon
7#
8# processname: sshd
9# config: /etc/ssh/ssh_host_key
10# config: /etc/ssh/ssh_host_key.pub
11# config: /etc/ssh/ssh_random_seed
12# config: /etc/ssh/sshd_config
13# pidfile: /var/run/sshd.pid
14
15# source function library
16. /etc/rc.d/init.d/functions
17
18# pull in sysconfig settings
19[ -f /etc/sysconfig/sshd ] && . /etc/sysconfig/sshd
20
21RETVAL=0
22prog="sshd"
23
24# Some functions to make the below more readable
25KEYGEN=/usr/bin/ssh-keygen
26SSHD=/usr/sbin/sshd
27RSA1_KEY=/etc/ssh/ssh_host_key
28RSA_KEY=/etc/ssh/ssh_host_rsa_key
29DSA_KEY=/etc/ssh/ssh_host_dsa_key
30PID_FILE=/var/run/sshd.pid
31
32do_rsa1_keygen() {
33	if [ ! -s $RSA1_KEY ]; then
34		echo -n $"Generating SSH1 RSA host key: "
35		if $KEYGEN -q -t rsa1 -f $RSA1_KEY -C '' -N '' >&/dev/null; then
36			chmod 600 $RSA1_KEY
37			chmod 644 $RSA1_KEY.pub
38			success $"RSA1 key generation"
39			echo
40		else
41			failure $"RSA1 key generation"
42			echo
43			exit 1
44		fi
45	fi
46}
47
48do_rsa_keygen() {
49	if [ ! -s $RSA_KEY ]; then
50		echo -n $"Generating SSH2 RSA host key: "
51		if $KEYGEN -q -t rsa -f $RSA_KEY -C '' -N '' >&/dev/null; then
52			chmod 600 $RSA_KEY
53			chmod 644 $RSA_KEY.pub
54			success $"RSA key generation"
55			echo
56		else
57			failure $"RSA key generation"
58			echo
59			exit 1
60		fi
61	fi
62}
63
64do_dsa_keygen() {
65	if [ ! -s $DSA_KEY ]; then
66		echo -n $"Generating SSH2 DSA host key: "
67		if $KEYGEN -q -t dsa -f $DSA_KEY -C '' -N '' >&/dev/null; then
68			chmod 600 $DSA_KEY
69			chmod 644 $DSA_KEY.pub
70			success $"DSA key generation"
71			echo
72		else
73			failure $"DSA key generation"
74			echo
75			exit 1
76		fi
77	fi
78}
79
80do_restart_sanity_check()
81{
82	$SSHD -t
83	RETVAL=$?
84	if [ ! "$RETVAL" = 0 ]; then
85		failure $"Configuration file or keys are invalid"
86		echo
87	fi
88}
89
90start()
91{
92	# Create keys if necessary
93	do_rsa1_keygen
94	do_rsa_keygen
95	do_dsa_keygen
96
97	echo -n $"Starting $prog:"
98	initlog -c "$SSHD $OPTIONS" && success || failure
99	RETVAL=$?
100	[ "$RETVAL" = 0 ] && touch /var/lock/subsys/sshd
101	echo
102}
103
104stop()
105{
106	echo -n $"Stopping $prog:"
107	killproc $SSHD -TERM
108	RETVAL=$?
109	[ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/sshd
110	echo
111}
112
113reload()
114{
115	echo -n $"Reloading $prog:"
116	killproc $SSHD -HUP
117	RETVAL=$?
118	echo
119}
120
121case "$1" in
122	start)
123		start
124		;;
125	stop)
126		stop
127		;;
128	restart)
129		stop
130		start
131		;;
132	reload)
133		reload
134		;;
135	condrestart)
136		if [ -f /var/lock/subsys/sshd ] ; then
137			do_restart_sanity_check
138			if [ "$RETVAL" = 0 ] ; then
139				stop
140				# avoid race
141				sleep 3
142				start
143			fi
144		fi
145		;;
146	status)
147		status $SSHD
148		RETVAL=$?
149		;;
150	*)
151		echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
152		RETVAL=1
153esac
154exit $RETVAL
155