# $OpenBSD: ssh-com.sh,v 1.9 2015/05/08 07:29:00 djm Exp $
# Placed in the Public Domain.
tid="connect to ssh.com server"
#TEST_COMBASE=/path/to/ssh/com/binaries
if [ "X${TEST_COMBASE}" = "X" ]; then
fatal '$TEST_COMBASE is not set'
fi
VERSIONS="
2.0.12
2.0.13
2.1.0
2.2.0
2.3.0
2.4.0
3.0.0
3.1.0
3.2.0
3.2.2
3.2.3
3.2.5
3.2.9
3.2.9.1
3.3.0"
# 2.0.10 does not support UserConfigDirectory
# 2.3.1 requires a config in $HOME/.ssh2
SRC=`dirname ${SCRIPT}`
# ssh.com
cat << EOF > $OBJ/sshd2_config
#*:
# Port and ListenAddress are not used.
QuietMode yes
Port 4343
ListenAddress 127.0.0.1
UserConfigDirectory ${OBJ}/%U
Ciphers AnyCipher
PubKeyAuthentication yes
#AllowedAuthentications publickey
AuthorizationFile authorization
HostKeyFile ${SRC}/dsa_ssh2.prv
PublicHostKeyFile ${SRC}/dsa_ssh2.pub
RandomSeedFile ${OBJ}/random_seed
MaxConnections 0
PermitRootLogin yes
VerboseMode no
CheckMail no
Ssh1Compatibility no
EOF
# create client config
sed "s/HostKeyAlias.*/HostKeyAlias ssh2-localhost-with-alias/" \
< $OBJ/ssh_config > $OBJ/ssh_config_com
# we need a DSA key for
rm -f ${OBJ}/dsa ${OBJ}/dsa.pub
${SSHKEYGEN} -q -N '' -t dsa -f ${OBJ}/dsa
# setup userdir, try rsa first
mkdir -p ${OBJ}/${USER}
cp /dev/null ${OBJ}/${USER}/authorization
for t in rsa dsa; do
${SSHKEYGEN} -e -f ${OBJ}/$t.pub > ${OBJ}/${USER}/$t.com
echo Key $t.com >> ${OBJ}/${USER}/authorization
echo IdentityFile ${OBJ}/$t >> ${OBJ}/ssh_config_com
done
# convert and append DSA hostkey
(
printf 'ssh2-localhost-with-alias,127.0.0.1,::1 '
${SSHKEYGEN} -if ${SRC}/dsa_ssh2.pub
) >> $OBJ/known_hosts
# go for it
for v in ${VERSIONS}; do
sshd2=${TEST_COMBASE}/${v}/sshd2
if [ ! -x ${sshd2} ]; then
continue
fi
trace "sshd2 ${v}"
PROXY="proxycommand ${sshd2} -qif ${OBJ}/sshd2_config 2> /dev/null"
${SSH} -qF ${OBJ}/ssh_config_com -o "${PROXY}" dummy exit 0
if [ $? -ne 0 ]; then
fail "ssh connect to sshd2 ${v} failed"
fi
ciphers="3des-cbc blowfish-cbc arcfour"
macs="hmac-md5"
case $v in
2.4.*)
ciphers="$ciphers cast128-cbc"
macs="$macs hmac-sha1 hmac-sha1-96 hmac-md5-96"
;;
3.*)
ciphers="$ciphers aes128-cbc cast128-cbc"
macs="$macs hmac-sha1 hmac-sha1-96 hmac-md5-96"
;;
esac
#ciphers="3des-cbc"
for m in $macs; do
for c in $ciphers; do
trace "sshd2 ${v} cipher $c mac $m"
verbose "test ${tid}: sshd2 ${v} cipher $c mac $m"
${SSH} -c $c -m $m -qF ${OBJ}/ssh_config_com -o "${PROXY}" dummy exit 0
if [ $? -ne 0 ]; then
fail "ssh connect to sshd2 ${v} with $c/$m failed"
fi
done
done
done
rm -rf ${OBJ}/${USER}
for i in sshd_config_proxy ssh_config_proxy random_seed \
sshd2_config dsa.pub dsa ssh_config_com; do
rm -f ${OBJ}/$i
done