sshd revision 1.25
11.1Slukem#!/bin/sh
21.1Slukem#
31.25Skre# $NetBSD: sshd,v 1.25 2017/12/04 14:50:33 kre Exp $
41.5Sjwise#
51.1Slukem
61.6Slukem# PROVIDE: sshd
71.6Slukem# REQUIRE: LOGIN
81.1Slukem
91.20Smycroft$_rc_subr_loaded . /etc/rc.subr
101.1Slukem
111.1Slukemname="sshd"
121.8Slukemrcvar=$name
131.6Slukemcommand="/usr/sbin/${name}"
141.7Slukempidfile="/var/run/${name}.pid"
151.18Slukemrequired_files="/etc/ssh/sshd_config"
161.7Slukemextra_commands="keygen reload"
171.3Sjwise
181.6Slukemsshd_keygen()
191.6Slukem{
201.23Schristos(
211.23Schristos	keygen="/usr/bin/ssh-keygen"
221.11Slukem	umask 022
231.23Schristos	while read type bits filename version name;  do
241.23Schristos		f="/etc/ssh/$filename"
251.23Schristos		if [ -f "$f" ]; then
261.23Schristos			echo "You already have an $name host key in $f"
271.23Schristos			echo "Skipping protocol version $version $name" \
281.23Schristos			    "Key Generation"
291.23Schristos		else
301.23Schristos			case "${bits}" in
311.23Schristos			-1)	bitarg=;;
321.23Schristos			0)	bitarg="${ssh_keygen_flags}";;
331.23Schristos			*)	bitarg="-b ${bits}";;
341.23Schristos			esac
351.23Schristos			"${keygen}" -t "${type}" ${bitarg} -f "${f}" -N ''
361.23Schristos		fi
371.23Schristos	done << _EOF
381.23Schristosdsa	1024	ssh_host_dsa_key	2	DSA
391.23Schristosecdsa	521	ssh_host_ecdsa_key	1	ECDSA
401.23Schristosed25519	-1	ssh_host_ed25519_key	1	ED25519
411.23Schristosrsa	0	ssh_host_rsa_key	2	RSA
421.23Schristos_EOF
431.23Schristos)
441.3Sjwise}
451.3Sjwise
461.6Slukemsshd_precmd()
471.6Slukem{
481.25Skre	if ! [ -f /etc/ssh/ssh_host_dsa_key ]	  ||
491.25Skre	   ! [ -f /etc/ssh/ssh_host_ecdsa_key ]	  ||
501.25Skre	   ! [ -f /etc/ssh/ssh_host_ed25519_key ] ||
511.25Skre	   ! [ -f /etc/ssh/ssh_host_rsa_key ];	    then
521.16Senami		run_rc_command keygen
531.3Sjwise	fi
541.3Sjwise}
551.3Sjwise
561.3Sjwisekeygen_cmd=sshd_keygen
571.5Sjwisestart_precmd=sshd_precmd
581.3Sjwise
591.3Sjwiseload_rc_config $name
601.3Sjwiserun_rc_command "$1"
61