sshd revision 262566
1257853Sjmmv#!/bin/sh 2257853Sjmmv# 3257853Sjmmv# $FreeBSD: stable/10/etc/rc.d/sshd 262566 2014-02-27 17:29:02Z des $ 4257853Sjmmv# 5257853Sjmmv 6257853Sjmmv# PROVIDE: sshd 7257853Sjmmv# REQUIRE: LOGIN FILESYSTEMS 8257853Sjmmv# KEYWORD: shutdown 9257853Sjmmv 10257853Sjmmv. /etc/rc.subr 11257853Sjmmv 12257853Sjmmvname="sshd" 13257853Sjmmvrcvar="sshd_enable" 14257853Sjmmvcommand="/usr/sbin/${name}" 15257853Sjmmvkeygen_cmd="sshd_keygen" 16260024Sjmmvstart_precmd="sshd_precmd" 17257853Sjmmvreload_precmd="sshd_configtest" 18257853Sjmmvrestart_precmd="sshd_configtest" 19260029Sjmmvconfigtest_cmd="sshd_configtest" 20257853Sjmmvpidfile="/var/run/${name}.pid" 21257853Sjmmvextra_commands="configtest keygen reload" 22257853Sjmmv 23257853Sjmmv: ${sshd_rsa1_enable:="yes"} 24264483Sjmmv: ${sshd_rsa_enable:="yes"} 25: ${sshd_dsa_enable:="yes"} 26: ${sshd_ecdsa_enable:="yes"} 27: ${sshd_ed25519_enable:="yes"} 28 29sshd_keygen_alg() 30{ 31 local alg=$1 32 local ALG="$(echo $alg | tr a-z A-Z)" 33 local keyfile 34 35 if ! checkyesno "sshd_${alg}_enable" ; then 36 return 0 37 fi 38 39 case $alg in 40 rsa1) 41 keyfile="/etc/ssh/ssh_host_key" 42 ;; 43 rsa|dsa|ecdsa|ed25519) 44 keyfile="/etc/ssh/ssh_host_${alg}_key" 45 ;; 46 *) 47 return 1 48 ;; 49 esac 50 51 if [ ! -x /usr/bin/ssh-keygen ] ; then 52 warn "/usr/bin/ssh-keygen does not exist." 53 return 1 54 fi 55 56 if [ -f "${keyfile}" ] ; then 57 info "$ALG host key exists." 58 else 59 echo "Generating $ALG host key." 60 /usr/bin/ssh-keygen -q -t $alg -f "$keyfile" -N "" 61 /usr/bin/ssh-keygen -l -f "$keyfile.pub" 62 fi 63} 64 65sshd_keygen() 66{ 67 sshd_keygen_alg rsa1 68 sshd_keygen_alg rsa 69 sshd_keygen_alg dsa 70 sshd_keygen_alg ecdsa 71 sshd_keygen_alg ed25519 72} 73 74sshd_configtest() 75{ 76 echo "Performing sanity check on ${name} configuration." 77 eval ${command} ${sshd_flags} -t 78} 79 80sshd_precmd() 81{ 82 run_rc_command keygen 83 run_rc_command configtest 84} 85 86load_rc_config $name 87run_rc_command "$1" 88