blob: e5d837cbc10422025f4abf71f9f8b8694b17d794 [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
Damien Miller73b42d22006-04-22 21:26:08 +100038 if [ -x /sbin/restorecon ]; then
39 /sbin/restorecon $RSA1_KEY.pub
40 fi
Damien Millercfe4a892002-05-10 12:19:23 +100041 success $"RSA1 key generation"
Damien Miller0bc1bd82000-11-13 22:57:25 +110042 echo
43 else
Damien Millercfe4a892002-05-10 12:19:23 +100044 failure $"RSA1 key generation"
Damien Miller0bc1bd82000-11-13 22:57:25 +110045 echo
46 exit 1
47 fi
48 fi
49}
Damien Millerba6f9f92001-09-15 21:03:10 +100050
Damien Millercfe4a892002-05-10 12:19:23 +100051do_rsa_keygen() {
52 if [ ! -s $RSA_KEY ]; then
53 echo -n $"Generating SSH2 RSA host key: "
54 if $KEYGEN -q -t rsa -f $RSA_KEY -C '' -N '' >&/dev/null; then
55 chmod 600 $RSA_KEY
56 chmod 644 $RSA_KEY.pub
Damien Miller73b42d22006-04-22 21:26:08 +100057 if [ -x /sbin/restorecon ]; then
58 /sbin/restorecon $RSA_KEY.pub
59 fi
Damien Millercfe4a892002-05-10 12:19:23 +100060 success $"RSA key generation"
61 echo
62 else
63 failure $"RSA key generation"
64 echo
65 exit 1
66 fi
67 fi
68}
69
70do_dsa_keygen() {
71 if [ ! -s $DSA_KEY ]; then
72 echo -n $"Generating SSH2 DSA host key: "
73 if $KEYGEN -q -t dsa -f $DSA_KEY -C '' -N '' >&/dev/null; then
74 chmod 600 $DSA_KEY
75 chmod 644 $DSA_KEY.pub
Damien Miller73b42d22006-04-22 21:26:08 +100076 if [ -x /sbin/restorecon ]; then
77 /sbin/restorecon $DSA_KEY.pub
78 fi
Damien Millercfe4a892002-05-10 12:19:23 +100079 success $"DSA key generation"
80 echo
81 else
82 failure $"DSA key generation"
83 echo
84 exit 1
85 fi
86 fi
87}
88
89do_restart_sanity_check()
90{
91 $SSHD -t
92 RETVAL=$?
93 if [ ! "$RETVAL" = 0 ]; then
94 failure $"Configuration file or keys are invalid"
95 echo
96 fi
97}
98
99start()
100{
101 # Create keys if necessary
102 do_rsa1_keygen
103 do_rsa_keygen
104 do_dsa_keygen
105
106 echo -n $"Starting $prog:"
107 initlog -c "$SSHD $OPTIONS" && success || failure
108 RETVAL=$?
109 [ "$RETVAL" = 0 ] && touch /var/lock/subsys/sshd
110 echo
111}
112
113stop()
114{
115 echo -n $"Stopping $prog:"
116 killproc $SSHD -TERM
117 RETVAL=$?
118 [ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/sshd
119 echo
120}
121
122reload()
123{
124 echo -n $"Reloading $prog:"
125 killproc $SSHD -HUP
126 RETVAL=$?
127 echo
128}
Damien Millerab8d1922000-08-08 16:53:28 +1000129
Damien Miller06230761999-10-28 14:03:14 +1000130case "$1" in
Damien Millerab8d1922000-08-08 16:53:28 +1000131 start)
Damien Millercfe4a892002-05-10 12:19:23 +1000132 start
Damien Millerab8d1922000-08-08 16:53:28 +1000133 ;;
134 stop)
Damien Millercfe4a892002-05-10 12:19:23 +1000135 stop
Damien Millerab8d1922000-08-08 16:53:28 +1000136 ;;
137 restart)
Damien Millercfe4a892002-05-10 12:19:23 +1000138 stop
139 start
140 ;;
141 reload)
142 reload
Damien Millerab8d1922000-08-08 16:53:28 +1000143 ;;
Damien Miller2b2cf522000-10-16 12:25:17 +1100144 condrestart)
145 if [ -f /var/lock/subsys/sshd ] ; then
Damien Millerba6f9f92001-09-15 21:03:10 +1000146 do_restart_sanity_check
Damien Millercfe4a892002-05-10 12:19:23 +1000147 if [ "$RETVAL" = 0 ] ; then
148 stop
149 # avoid race
150 sleep 3
151 start
152 fi
Damien Miller2b2cf522000-10-16 12:25:17 +1100153 fi
154 ;;
Damien Millerab8d1922000-08-08 16:53:28 +1000155 status)
Damien Millercfe4a892002-05-10 12:19:23 +1000156 status $SSHD
Damien Millerab8d1922000-08-08 16:53:28 +1000157 RETVAL=$?
158 ;;
159 *)
Damien Millercfe4a892002-05-10 12:19:23 +1000160 echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
161 RETVAL=1
Damien Miller06230761999-10-28 14:03:14 +1000162esac
Damien Miller06230761999-10-28 14:03:14 +1000163exit $RETVAL