sshd revision 98184
178344Sobrien#!/bin/sh
278344Sobrien#
398184Sgordon# $NetBSD: sshd,v 1.18 2002/04/29 08:23:34 lukem Exp $
498184Sgordon# $FreeBSD: head/etc/rc.d/sshd 98184 2002-06-13 22:14:37Z gordon $
578344Sobrien#
678344Sobrien
778344Sobrien# PROVIDE: sshd
878344Sobrien# REQUIRE: LOGIN
998184Sgordon# KEYWORD: FreeBSD NetBSD
1078344Sobrien
1178344Sobrien. /etc/rc.subr
1278344Sobrien
1378344Sobrienname="sshd"
1498184Sgordonrcvar=`set_rcvar`
1578344Sobriencommand="/usr/sbin/${name}"
1698184Sgordonkeygen_cmd="sshd_keygen"
1798184Sgordonstart_precmd="sshd_precmd"
1878344Sobrienpidfile="/var/run/${name}.pid"
1998184Sgordonrequired_files="/etc/ssh/sshd_config"
2078344Sobrienextra_commands="keygen reload"
2178344Sobrien
2278344Sobriensshd_keygen()
2378344Sobrien{
2498184Sgordon	(
2598184Sgordon	umask 022
2698184Sgordon
2798184Sgordon	# Can't do anything if ssh is not installed
2898184Sgordon	[ -x /usr/bin/ssh-keygen ] || {
2998184Sgordon		warn "/usr/bin/ssh-keygen does not exist."
3098184Sgordon		return 1
3198184Sgordon	}
3298184Sgordon
3398184Sgordon	if [ -f /etc/ssh/ssh_host_key ]; then
3498184Sgordon		echo "You already have an RSA host key" \
3598184Sgordon		    "in /etc/ssh/ssh_host_key"
3698184Sgordon		echo "Skipping protocol version 1 RSA Key Generation"
3778344Sobrien	else
3898184Sgordon		/usr/bin/ssh-keygen -t rsa1 -b 1024 \
3998184Sgordon		    -f /etc/ssh/ssh_host_key -N ''
4078344Sobrien	fi
4178344Sobrien
4298184Sgordon	if [ -f /etc/ssh/ssh_host_dsa_key ]; then
4398184Sgordon		echo "You already have a DSA host key" \
4498184Sgordon		    "in /etc/ssh/ssh_host_dsa_key"
4598184Sgordon		echo "Skipping protocol version 2 DSA Key Generation"
4678344Sobrien	else
4798184Sgordon		/usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
4878344Sobrien	fi
4998184Sgordon
5098184Sgordon	if [ -f /etc/ssh/ssh_host_rsa_key ]; then
5198184Sgordon		echo "You already have a RSA host key" \
5298184Sgordon		    "in /etc/ssh/ssh_host_rsa_key"
5398184Sgordon		echo "Skipping protocol version 2 RSA Key Generation"
5498184Sgordon	else
5598184Sgordon		/usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
5698184Sgordon	fi
5798184Sgordon	)
5878344Sobrien}
5978344Sobrien
6078344Sobriensshd_precmd()
6178344Sobrien{
6298184Sgordon	if [ ! -f /etc/ssh/ssh_host_key -o \
6398184Sgordon	    ! -f /etc/ssh/ssh_host_dsa_key -o \
6498184Sgordon	    ! -f /etc/ssh/ssh_host_rsa_key ]; then
6598184Sgordon		run_rc_command keygen
6678344Sobrien	fi
6778344Sobrien}
6878344Sobrien
6978344Sobrienload_rc_config $name
7078344Sobrienrun_rc_command "$1"
71