167761Smsmith#!/bin/sh 267761Smsmith# 367761Smsmith# $FreeBSD: releng/10.2/etc/rc.d/sshd 262566 2014-02-27 17:29:02Z des $ 467761Smsmith# 567761Smsmith 667761Smsmith# PROVIDE: sshd 767761Smsmith# REQUIRE: LOGIN FILESYSTEMS 867761Smsmith# KEYWORD: shutdown 967761Smsmith 1067761Smsmith. /etc/rc.subr 1167761Smsmith 1267761Smsmithname="sshd" 1367761Smsmithrcvar="sshd_enable" 1467761Smsmithcommand="/usr/sbin/${name}" 1567761Smsmithkeygen_cmd="sshd_keygen" 1667761Smsmithstart_precmd="sshd_precmd" 1767761Smsmithreload_precmd="sshd_configtest" 1867761Smsmithrestart_precmd="sshd_configtest" 1967761Smsmithconfigtest_cmd="sshd_configtest" 2067761Smsmithpidfile="/var/run/${name}.pid" 2167761Smsmithextra_commands="configtest keygen reload" 2267761Smsmith 2367761Smsmith: ${sshd_rsa1_enable:="yes"} 2467761Smsmith: ${sshd_rsa_enable:="yes"} 2567761Smsmith: ${sshd_dsa_enable:="yes"} 2667761Smsmith: ${sshd_ecdsa_enable:="yes"} 2767761Smsmith: ${sshd_ed25519_enable:="yes"} 2867761Smsmith 2967761Smsmithsshd_keygen_alg() 3069744Smsmith{ 3169744Smsmith local alg=$1 3269744Smsmith local ALG="$(echo $alg | tr a-z A-Z)" 3367761Smsmith local keyfile 3467761Smsmith 3567761Smsmith if ! checkyesno "sshd_${alg}_enable" ; then 3667761Smsmith return 0 3778662Siwasaki fi 3878662Siwasaki 3978662Siwasaki case $alg in 4078662Siwasaki rsa1) 4178662Siwasaki keyfile="/etc/ssh/ssh_host_key" 4278662Siwasaki ;; 4378662Siwasaki rsa|dsa|ecdsa|ed25519) 4478662Siwasaki keyfile="/etc/ssh/ssh_host_${alg}_key" 4578662Siwasaki ;; 4678662Siwasaki *) 4778662Siwasaki return 1 4878662Siwasaki ;; 4978662Siwasaki esac 5078662Siwasaki 5170271Stakawata if [ ! -x /usr/bin/ssh-keygen ] ; then 5270271Stakawata warn "/usr/bin/ssh-keygen does not exist." 5370271Stakawata return 1 5470271Stakawata fi 55101560Siwasaki 5670271Stakawata if [ -f "${keyfile}" ] ; then 5770271Stakawata info "$ALG host key exists." 5870271Stakawata else 5970271Stakawata echo "Generating $ALG host key." 6070271Stakawata /usr/bin/ssh-keygen -q -t $alg -f "$keyfile" -N "" 6170271Stakawata /usr/bin/ssh-keygen -l -f "$keyfile.pub" 6270271Stakawata fi 6370271Stakawata} 6470271Stakawata 6570271Stakawatasshd_keygen() 6670271Stakawata{ 6770271Stakawata sshd_keygen_alg rsa1 6870271Stakawata sshd_keygen_alg rsa 6970271Stakawata sshd_keygen_alg dsa 7070271Stakawata sshd_keygen_alg ecdsa 7170271Stakawata sshd_keygen_alg ed25519 7270271Stakawata} 7370271Stakawata 7470271Stakawatasshd_configtest() 7578662Siwasaki{ 7678662Siwasaki echo "Performing sanity check on ${name} configuration." 7778662Siwasaki eval ${command} ${sshd_flags} -t 7878662Siwasaki} 7978662Siwasaki 8078662Siwasakisshd_precmd() 8178662Siwasaki{ 8278662Siwasaki run_rc_command keygen 8378662Siwasaki run_rc_command configtest 8478662Siwasaki} 8578662Siwasaki 8678662Siwasakiload_rc_config $name 8778662Siwasakirun_rc_command "$1" 8878662Siwasaki