sshd revision 256281
1#!/bin/sh
2#
3# $FreeBSD: stable/10/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