sshd revision 256126
1#!/bin/sh 2# 3# $FreeBSD: head/etc/rc.d/sshd 256126 2013-10-07 21:39:42Z delphij $ 4# 5 6# PROVIDE: sshd 7# REQUIRE: LOGIN FILESYSTEMS 8# KEYWORD: shutdown 9 10. /etc/rc.subr 11 12name="sshd" 13rcvar="sshd_enable" 14command="/usr/sbin/${name}" 15keygen_cmd="sshd_keygen" 16start_precmd="sshd_precmd" 17reload_precmd="sshd_configtest" 18restart_precmd="sshd_configtest" 19configtest_cmd="sshd_configtest" 20pidfile="/var/run/${name}.pid" 21extra_commands="configtest keygen reload" 22 23: ${sshd_rsa1_enable:="yes"} 24: ${sshd_rsa_enable:="yes"} 25: ${sshd_dsa_enable:="yes"} 26: ${sshd_ecdsa_enable:="yes"} 27 28sshd_keygen_alg() 29{ 30 local alg=$1 31 local ALG="$(echo $alg | tr a-z A-Z)" 32 local keyfile 33 34 if ! checkyesno "sshd_${alg}_enable" ; then 35 return 0 36 fi 37 38 case $alg in 39 rsa1) 40 keyfile="/etc/ssh/ssh_host_key" 41 ;; 42 rsa|dsa|ecdsa) 43 keyfile="/etc/ssh/ssh_host_${alg}_key" 44 ;; 45 *) 46 return 1 47 ;; 48 esac 49 50 if [ ! -x /usr/bin/ssh-keygen ] ; then 51 warn "/usr/bin/ssh-keygen does not exist." 52 return 1 53 fi 54 55 if [ -f "${keyfile}" ] ; then 56 info "$ALG host key exists." 57 else 58 echo "Generating $ALG host key." 59 /usr/bin/ssh-keygen -q -t $alg -f "$keyfile" -N "" 60 /usr/bin/ssh-keygen -l -f "$keyfile.pub" 61 fi 62} 63 64sshd_keygen() 65{ 66 sshd_keygen_alg rsa1 67 sshd_keygen_alg rsa 68 sshd_keygen_alg dsa 69 sshd_keygen_alg ecdsa 70} 71 72sshd_configtest() 73{ 74 echo "Performing sanity check on ${name} configuration." 75 eval ${command} ${sshd_flags} -t 76} 77 78sshd_precmd() 79{ 80 run_rc_command keygen 81 run_rc_command configtest 82} 83 84load_rc_config $name 85run_rc_command "$1" 86