blob: 4ee8630c3954eb1711d5f4c03a7ece5f2678f116 [file] [log] [blame]
Damien Miller06230761999-10-28 14:03:14 +10001#!/bin/bash
Damien Millercfe4a892002-05-10 12:19:23 +10002#
Damien Miller06230761999-10-28 14:03:14 +10003# Init file for OpenSSH server daemon
4#
5# chkconfig: 2345 55 25
6# description: OpenSSH server daemon
7#
Damien Millera37010e1999-10-29 09:18:29 +10008# 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
Damien Miller06230761999-10-28 14:03:14 +100014
15# source function library
16. /etc/rc.d/init.d/functions
17
Damien Millercfe4a892002-05-10 12:19:23 +100018# pull in sysconfig settings
Ben Lindstrom26f33892001-04-27 00:46:17 +000019[ -f /etc/sysconfig/sshd ] && . /etc/sysconfig/sshd
20
Damien Miller06230761999-10-28 14:03:14 +100021RETVAL=0
Damien Millercfe4a892002-05-10 12:19:23 +100022prog="sshd"
Damien Miller06230761999-10-28 14:03:14 +100023
Damien Millerab8d1922000-08-08 16:53:28 +100024# Some functions to make the below more readable
25KEYGEN=/usr/bin/ssh-keygen
Damien Millercfe4a892002-05-10 12:19:23 +100026SSHD=/usr/sbin/sshd
Damien Miller0bc1bd82000-11-13 22:57:25 +110027RSA1_KEY=/etc/ssh/ssh_host_key
28RSA_KEY=/etc/ssh/ssh_host_rsa_key
Damien Millerab8d1922000-08-08 16:53:28 +100029DSA_KEY=/etc/ssh/ssh_host_dsa_key
30PID_FILE=/var/run/sshd.pid
Damien Millercfe4a892002-05-10 12:19:23 +100031
Damien Miller0bc1bd82000-11-13 22:57:25 +110032do_rsa1_keygen() {
Damien Millercfe4a892002-05-10 12:19:23 +100033 if [ ! -s $RSA1_KEY ]; then
34 echo -n $"Generating SSH1 RSA host key: "
Damien Miller0bc1bd82000-11-13 22:57:25 +110035 if $KEYGEN -q -t rsa1 -f $RSA1_KEY -C '' -N '' >&/dev/null; then
Damien Millercfe4a892002-05-10 12:19:23 +100036 chmod 600 $RSA1_KEY
37 chmod 644 $RSA1_KEY.pub
38 success $"RSA1 key generation"
Damien Miller0bc1bd82000-11-13 22:57:25 +110039 echo
40 else
Damien Millercfe4a892002-05-10 12:19:23 +100041 failure $"RSA1 key generation"
Damien Miller0bc1bd82000-11-13 22:57:25 +110042 echo
43 exit 1
44 fi
45 fi
46}
Damien Millerba6f9f92001-09-15 21:03:10 +100047
Damien Millercfe4a892002-05-10 12:19:23 +100048do_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}
Damien Millerab8d1922000-08-08 16:53:28 +1000120
Damien Miller06230761999-10-28 14:03:14 +1000121case "$1" in
Damien Millerab8d1922000-08-08 16:53:28 +1000122 start)
Damien Millercfe4a892002-05-10 12:19:23 +1000123 start
Damien Millerab8d1922000-08-08 16:53:28 +1000124 ;;
125 stop)
Damien Millercfe4a892002-05-10 12:19:23 +1000126 stop
Damien Millerab8d1922000-08-08 16:53:28 +1000127 ;;
128 restart)
Damien Millercfe4a892002-05-10 12:19:23 +1000129 stop
130 start
131 ;;
132 reload)
133 reload
Damien Millerab8d1922000-08-08 16:53:28 +1000134 ;;
Damien Miller2b2cf522000-10-16 12:25:17 +1100135 condrestart)
136 if [ -f /var/lock/subsys/sshd ] ; then
Damien Millerba6f9f92001-09-15 21:03:10 +1000137 do_restart_sanity_check
Damien Millercfe4a892002-05-10 12:19:23 +1000138 if [ "$RETVAL" = 0 ] ; then
139 stop
140 # avoid race
141 sleep 3
142 start
143 fi
Damien Miller2b2cf522000-10-16 12:25:17 +1100144 fi
145 ;;
Damien Millerab8d1922000-08-08 16:53:28 +1000146 status)
Damien Millercfe4a892002-05-10 12:19:23 +1000147 status $SSHD
Damien Millerab8d1922000-08-08 16:53:28 +1000148 RETVAL=$?
149 ;;
150 *)
Damien Millercfe4a892002-05-10 12:19:23 +1000151 echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
152 RETVAL=1
Damien Miller06230761999-10-28 14:03:14 +1000153esac
Damien Miller06230761999-10-28 14:03:14 +1000154exit $RETVAL