#!/bin/bash # # Init file for OpenSSH server daemon # # chkconfig: 2345 55 25 # description: OpenSSH server daemon # # processname: sshd # config: /etc/ssh/ssh_host_key # config: /etc/ssh/ssh_host_key.pub # config: /etc/ssh/ssh_random_seed # config: /etc/ssh/sshd_config # pidfile: /var/run/sshd.pid # ### BEGIN INIT INFO # Provides: sshd # Required-Start: $network # Should-Start: $remote_fs # Required-Stop: $network # Should-Stop: $remote_fs # Default-Start: 2 3 4 5 # Short-Description: OpenSSH server daemon # Description: OpenSSH server daemon ### END INIT INFO # source function library . /etc/rc.d/init.d/functions RETVAL=0 prog="sshd" # Some functions to make the below more readable SSHD=/usr/sbin/sshd PID_FILE=/var/run/sshd.pid # pull in sysconfig settings [ -f /etc/sysconfig/sshd ] && . /etc/sysconfig/sshd do_restart_sanity_check() { $SSHD -t RETVAL=$? if [ ! "$RETVAL" = 0 ]; then failure $"Configuration file or keys are invalid" echo fi } start() { # Create keys if necessary /usr/bin/ssh-keygen -A echo -n $"Starting $prog:" $SSHD $OPTIONS && success "startup" || failure "startup" RETVAL=$? [ "$RETVAL" = 0 ] && touch /var/lock/subsys/sshd echo } stop() { echo -n $"Stopping $prog:" if [ -r /var/run/sshd.pid ]; then kill -s TERM `cat /var/run/sshd.pid` RETVAL=$? if [ "$runlevel" = 0 -o "$runlevel" = 6 ]; then # stopping the system, kill active sshd clients killproc -p "" sshd fi [ "$RETVAL" = 0 ] && success "stop" || failure "stop" else success "already stopped" RETVAL=0 fi [ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/sshd echo } reload() { echo -n $"Reloading $prog:" if [ -r /var/run/sshd.pid ]; then kill -s HUP `cat /var/run/sshd.pid` RETVAL=$? [ "$RETVAL" = 0 ] && success "config reload" || failure "config reload" else failure "not running so config reload" RETVAL=1 fi echo } case "$1" in start) start ;; stop) stop ;; restart) stop sleep 1 start ;; reload) reload ;; condrestart) if [ -f /var/lock/subsys/sshd ] ; then do_restart_sanity_check if [ "$RETVAL" = 0 ] ; then stop # avoid race sleep 3 start fi fi ;; status) status $SSHD RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" RETVAL=1 esac exit $RETVAL