import of openssh-5.8p1
[openssh.git] / contrib / redhat / sshd.init
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
21 RETVAL=0
22 prog="sshd"
23
24 # Some functions to make the below more readable
25 KEYGEN=/usr/bin/ssh-keygen
26 SSHD=/usr/sbin/sshd
27 RSA1_KEY=/etc/ssh/ssh_host_key
28 RSA_KEY=/etc/ssh/ssh_host_rsa_key
29 DSA_KEY=/etc/ssh/ssh_host_dsa_key
30 PID_FILE=/var/run/sshd.pid
31
32 do_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                         if [ -x /sbin/restorecon ]; then
39                             /sbin/restorecon $RSA1_KEY.pub
40                         fi
41                         success $"RSA1 key generation"
42                         echo
43                 else
44                         failure $"RSA1 key generation"
45                         echo
46                         exit 1
47                 fi
48         fi
49 }
50
51 do_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
57                         if [ -x /sbin/restorecon ]; then
58                             /sbin/restorecon $RSA_KEY.pub
59                         fi
60                         success $"RSA key generation"
61                         echo
62                 else
63                         failure $"RSA key generation"
64                         echo
65                         exit 1
66                 fi
67         fi
68 }
69
70 do_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
76                         if [ -x /sbin/restorecon ]; then
77                             /sbin/restorecon $DSA_KEY.pub
78                         fi
79                         success $"DSA key generation"
80                         echo
81                 else
82                         failure $"DSA key generation"
83                         echo
84                         exit 1
85                 fi
86         fi
87 }
88
89 do_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
99 start()
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         $SSHD $OPTIONS && success || failure
108         RETVAL=$?
109         [ "$RETVAL" = 0 ] && touch /var/lock/subsys/sshd
110         echo
111 }
112
113 stop()
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
122 reload()
123 {
124         echo -n $"Reloading $prog:"
125         killproc $SSHD -HUP
126         RETVAL=$?
127         echo
128 }
129
130 case "$1" in
131         start)
132                 start
133                 ;;
134         stop)
135                 stop
136                 ;;
137         restart)
138                 stop
139                 start
140                 ;;
141         reload)
142                 reload
143                 ;;
144         condrestart)
145                 if [ -f /var/lock/subsys/sshd ] ; then
146                         do_restart_sanity_check
147                         if [ "$RETVAL" = 0 ] ; then
148                                 stop
149                                 # avoid race
150                                 sleep 3
151                                 start
152                         fi
153                 fi
154                 ;;
155         status)
156                 status $SSHD
157                 RETVAL=$?
158                 ;;
159         *)
160                 echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
161                 RETVAL=1
162 esac
163 exit $RETVAL