--- 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