Date: Sat, 13 Nov 2004 17:50:15 +0100 (CET) From: Oliver Lehmann <oliver@FreeBSD.org> To: FreeBSD-gnats-submit@FreeBSD.org Cc: Oliver Lehmann <oliver@FreeBSD.org> Subject: bin/73909: rc.d/sshd does not work with ports-ssh Message-ID: <200411131650.iADGoFQk055004@kartoffel.salatschuessel.net> Resent-Message-ID: <200411131650.iADGoRdG086964@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 73909
>Category: bin
>Synopsis: rc.d/sshd does not work with ports-ssh
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Nov 13 16:50:27 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator: Oliver Lehmann
>Release: FreeBSD 4.10-STABLE i386
>Organization:
>Environment:
System: FreeBSD kartoffel.salatschuessel.net 4.10-STABLE FreeBSD 4.10-STABLE #0: Fri Jun 4 20:32:48 CEST 2004 olivleh1@kartoffel.salatschuessel.net:/usr/obj/usr/src/sys/KARTOFFEL i386
FreeBSD avocado.salatschuessel.net 5.3-STABLE FreeBSD 5.3-STABLE #1: Sat Nov 13 15:16:49 CET 2004 olivleh1@avocado.salatschuessel.net:/usr/obj/usr/src/sys/AVOCADO i386
>Description:
the script complains about a nonexistent /usr/sbin/ssh-keygen... that is
true.. because it is instaled in /usr/local/bin/ssh-keygen if I use sshd
from ports
>How-To-Repeat:
don't install base-ssh and base-ssl
remove /etc/ssh
keep sshd_enable="YES" and sshd_program="/usr/local/sbin/sshd" in your rc.conf
run /etc/rc.d/sshd start
>Fix:
--- sshd.diff begins here ---
--- sshd.orig Sat Nov 13 17:30:12 2004
+++ sshd Sat Nov 13 17:41:16 2004
@@ -15,9 +15,18 @@
start_precmd="sshd_precmd"
pidfile="/var/run/${name}.pid"
extra_commands="keygen reload"
timeout=300
+get_prefix() {
+ PREFIX=${sshd_program%%/sbin/sshd}
+ if [ "$PREFIX" != "/usr" ] ; then
+ ETCDIR="$PREFIX/etc"
+ else
+ ETCDIR="/etc"
+ fi
+}
+
user_reseed()
{
(
@@ -42,47 +50,49 @@
sshd_keygen()
{
+ get_prefix
(
umask 022
# Can't do anything if ssh is not installed
- [ -x /usr/bin/ssh-keygen ] || {
- warn "/usr/bin/ssh-keygen does not exist."
+ [ -x ${PREFIX}/bin/ssh-keygen ] || {
+ warn "${PREFIX}/bin/ssh-keygen does not exist."
return 1
}
- if [ -f /etc/ssh/ssh_host_key ]; then
+ if [ -f ${ETCDIR}/ssh/ssh_host_key ]; then
echo "You already have an RSA host key" \
- "in /etc/ssh/ssh_host_key"
+ "in ${ETCDIR}/ssh/ssh_host_key"
echo "Skipping protocol version 1 RSA Key Generation"
else
- /usr/bin/ssh-keygen -t rsa1 -b 1024 \
- -f /etc/ssh/ssh_host_key -N ''
+ ${PREFIX}/bin/ssh-keygen -t rsa1 -b 1024 \
+ -f ${ETCDIR}/ssh/ssh_host_key -N ''
fi
- if [ -f /etc/ssh/ssh_host_dsa_key ]; then
+ if [ -f ${ETCDIR}/ssh/ssh_host_dsa_key ]; then
echo "You already have a DSA host key" \
- "in /etc/ssh/ssh_host_dsa_key"
+ "in ${ETCDIR}/ssh/ssh_host_dsa_key"
echo "Skipping protocol version 2 DSA Key Generation"
else
- /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
+ ${PREFIX}/bin/ssh-keygen -t dsa -f ${ETCDIR}/ssh/ssh_host_dsa_key -N ''
fi
- if [ -f /etc/ssh/ssh_host_rsa_key ]; then
+ if [ -f ${ETCDIR}/ssh/ssh_host_rsa_key ]; then
echo "You already have a RSA host key" \
- "in /etc/ssh/ssh_host_rsa_key"
+ "in ${ETCDIR}/ssh/ssh_host_rsa_key"
echo "Skipping protocol version 2 RSA Key Generation"
else
- /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
+ ${PREFIX}/bin/ssh-keygen -t rsa -f ${ETCDIR}/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
+ get_prefix
+ if [ ! -f ${ETCDIR}/ssh/ssh_host_key -o \
+ ! -f ${ETCDIR}/ssh/ssh_host_dsa_key -o \
+ ! -f ${ETCDIR}/ssh/ssh_host_rsa_key ]; then
user_reseed
run_rc_command keygen
fi
--- sshd.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200411131650.iADGoFQk055004>
