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 if [ -n "`pidfileofproc $SSHD`" ] ; then 117 killproc $SSHD -TERM 118 else 119 failure $"Stopping $prog" 120 fi 121 RETVAL=$? 122 [ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/sshd 123 echo 124 } 125 126 reload() 127 { 128 echo -n $"Reloading $prog: " 129 if [ -n "`pidfileofproc $SSHD`" ] ; then 130 killproc $SSHD -HUP 131 else 132 failure $"Reloading $prog" 133 fi 134 RETVAL=$? 135 echo 136 } 137 138 case "$1" in 139 start) 140 start 141 ;; 142 stop) 143 stop 144 ;; 145 restart) 146 stop 147 start 148 ;; 149 reload) 150 reload 151 ;; 152 condrestart) 153 if [ -f /var/lock/subsys/sshd ] ; then 154 do_restart_sanity_check 155 if [ "$RETVAL" = 0 ] ; then 156 stop 157 # avoid race 158 sleep 3 159 start 160 fi 161 fi 162 ;; 163 status) 164 status $SSHD 165 RETVAL=$? 166 ;; 167 *) 168 echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" 169 RETVAL=1 170 esac 171 exit $RETVAL