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