diff --git a/templates/openssh/files/sshd b/templates/openssh/files/sshd
deleted file mode 100644
index 2e5aeeb585..0000000000
--- a/templates/openssh/files/sshd
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/sh
-#
-# $NetBSD: sshd.sh,v 1.11 2003/05/22 09:05:38 wiz Exp $
-#
-# PROVIDE: sshd
-# REQUIRE: DAEMON LOGIN
-
-$_rc_subr_loaded . /etc/rc.subr
-
-name="sshd"
-rcvar=$name
-command="/usr/sbin/${name}"
-keygen_command="/usr/bin/ssh-keygen"
-pidfile="/var/run/${name}.pid"
-required_files="/etc/ssh/sshd_config"
-extra_commands="keygen reload"
-
-sshd_keygen()
-{
-	(
-	umask 022
-	if [ -f /etc/ssh/ssh_host_key ]; then
-		echo "You already have an RSA host key in /etc/ssh/ssh_host_key"
-		echo "Skipping protocol version 1 RSA Key Generation"
-	else
-		${keygen_command} -t rsa1 -b 1024 -f /etc/ssh/ssh_host_key -N ''
-	fi
-
-	if [ -f /etc/ssh/ssh_host_dsa_key ]; then
-		echo "You already have a DSA host key in /etc/ssh/ssh_host_dsa_key"
-		echo "Skipping protocol version 2 DSA Key Generation"
-	else
-		${keygen_command} -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
-	fi
-
-	if [ -f /etc/ssh/ssh_host_rsa_key ]; then
-		echo "You already have a RSA host key in /etc/ssh/ssh_host_rsa_key"
-		echo "Skipping protocol version 2 RSA Key Generation"
-	else
-		${keygen_command} -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
-	fi
-	)
-}
-
-sshd_precmd()
-{
-	if [ ! -f /etc/ssh/ssh_host_key -o \
-	     ! -f /etc/ssh/ssh_host_dsa_key -o \
-	     ! -f /etc/ssh/ssh_host_rsa_key ]; then
-			run_rc_command keygen
-	fi
-}
-
-keygen_cmd=sshd_keygen
-start_precmd=sshd_precmd
-
-load_rc_config $name
-run_rc_command "$1"
diff --git a/templates/openssh/files/sshd.rc b/templates/openssh/files/sshd.rc
new file mode 100644
index 0000000000..b36d097880
--- /dev/null
+++ b/templates/openssh/files/sshd.rc
@@ -0,0 +1,33 @@
+#!/sbin/runscript
+
+command=/usr/sbin/sshd
+pidfile=/var/run/sshd.pid
+required_files=/etc/ssh/sshd_config
+name="Secure Shell Daemon"
+
+depend()
+{
+	use logger dns
+	need net
+}
+
+start_pre()
+{
+	if [ ! -e /etc/ssh/ssh_host_key ]; then
+		ebegin "Generating Hostkey"
+		ssh-keygen -t rsa1 -b 4096 -f /etc/ssh/ssh_host_key -N ''
+		eend $? || return 1
+	fi
+	if [ ! -f /etc/ssh/ssh_host_dsa_key ]; then
+		ebegin "Generating DSA Hostkey"
+		ssh-keygen -d -f /etc/ssh/ssh_host_dsa_key -N ''
+		eend $? || return 1
+	fi
+	if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
+		ebegin "Generating RSA Hostkey"
+		ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
+		eend $? || return 1
+	fi
+
+	$command -t
+}
diff --git a/templates/openssh/server.template b/templates/openssh/server.template
index f7fb605e77..e4b4cbb7a7 100644
--- a/templates/openssh/server.template
+++ b/templates/openssh/server.template
@@ -5,13 +5,18 @@ long_desc="${long_desc}
 
  This package contains the ${pkgname} server files."
 
+revision=1
 conf_files="/etc/ssh/sshd_config /etc/pam.d/sshd"
+openrc_services="sshd default"
+triggers="openrc-service"
+
 Add_dependency run glibc
 Add_dependency run zlib
 Add_dependency run openssl
 Add_dependency run pam
 Add_dependency run tcp_wrappers-libs
 Add_dependency run openssh
+Add_dependency run OpenRC
 
 do_install()
 {
@@ -30,6 +35,6 @@ do_install()
 			${DESTDIR}/usr/share/man/man8
 	done
 	mv ${SRCPKGDESTDIR}/etc/pam.d ${DESTDIR}/etc
-	mv ${SRCPKGDESTDIR}/etc/rc.d ${DESTDIR}/etc
+	mv ${SRCPKGDESTDIR}/etc/init.d ${DESTDIR}/etc
 	mv ${SRCPKGDESTDIR}/var ${DESTDIR}
 }
diff --git a/templates/openssh/template b/templates/openssh/template
index 461e137218..77b5d7d9d2 100644
--- a/templates/openssh/template
+++ b/templates/openssh/template
@@ -50,7 +50,8 @@ post_install()
 		${DESTDIR}/usr/bin/ssh-copy-id
 	install -D -m644 ${wrksrc}/contrib/ssh-copy-id.1 \
 		${DESTDIR}/usr/share/man/man1/ssh-copy-id.1
-	install -D -m755 ${FILESDIR}/sshd ${DESTDIR}/etc/rc.d/sshd
+	# Install the OpenRC service
+	install -D -m755 ${FILESDIR}/sshd.rc ${DESTDIR}/etc/init.d/sshd
 
 	sed -i \
 		-e 's|^#ListenAddress 0.0.0.0|ListenAddress 0.0.0.0|g' \