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 initlog -c "$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