1255670Sdes# $OpenBSD: ssh-com-client.sh,v 1.7 2013/05/17 04:29:14 dtucker Exp $ 298937Sdes# Placed in the Public Domain. 398937Sdes 498937Sdestid="connect with ssh.com client" 598937Sdes 698937Sdes#TEST_COMBASE=/path/to/ssh/com/binaries 798937Sdesif [ "X${TEST_COMBASE}" = "X" ]; then 898937Sdes fatal '$TEST_COMBASE is not set' 998937Sdesfi 1098937Sdes 1198937SdesVERSIONS=" 1298937Sdes 2.1.0 1398937Sdes 2.2.0 1498937Sdes 2.3.0 1598937Sdes 2.3.1 1698937Sdes 2.4.0 1798937Sdes 3.0.0 18113908Sdes 3.1.0 19113908Sdes 3.2.0 20124208Sdes 3.2.2 21124208Sdes 3.2.3 22128456Sdes 3.2.5 23128456Sdes 3.2.9 24128456Sdes 3.2.9.1 25113908Sdes 3.3.0" 2698937Sdes 2798937Sdes# 2.0.10 2.0.12 2.0.13 don't like the test setup 2898937Sdes 2998937Sdes# setup authorized keys 3098937SdesSRC=`dirname ${SCRIPT}` 3198937Sdescp ${SRC}/dsa_ssh2.prv ${OBJ}/id.com 3298937Sdeschmod 600 ${OBJ}/id.com 3398937Sdes${SSHKEYGEN} -i -f ${OBJ}/id.com > $OBJ/id.openssh 3498937Sdeschmod 600 ${OBJ}/id.openssh 3598937Sdes${SSHKEYGEN} -y -f ${OBJ}/id.openssh > $OBJ/authorized_keys_$USER 3698937Sdes${SSHKEYGEN} -e -f ${OBJ}/id.openssh > $OBJ/id.com.pub 3798937Sdesecho IdKey ${OBJ}/id.com > ${OBJ}/id.list 3898937Sdes 3998937Sdes# we need a DSA host key 4098937Sdest=dsa 4198937Sdesrm -f ${OBJ}/$t ${OBJ}/$t.pub 4298937Sdes${SSHKEYGEN} -q -N '' -t $t -f ${OBJ}/$t 4398937Sdes$SUDO cp $OBJ/$t $OBJ/host.$t 4498937Sdesecho HostKey $OBJ/host.$t >> $OBJ/sshd_config 4598937Sdes 4698937Sdes# add hostkeys to known hosts 4798937Sdesmkdir -p ${OBJ}/${USER}/hostkeys 4898937SdesHK=${OBJ}/${USER}/hostkeys/key_${PORT}_127.0.0.1 4998937Sdes${SSHKEYGEN} -e -f ${OBJ}/rsa.pub > ${HK}.ssh-rsa.pub 5098937Sdes${SSHKEYGEN} -e -f ${OBJ}/dsa.pub > ${HK}.ssh-dss.pub 5198937Sdes 5298937Sdescat > ${OBJ}/ssh2_config << EOF 5398937Sdes*: 5498937Sdes QuietMode yes 5598937Sdes StrictHostKeyChecking yes 5698937Sdes Port ${PORT} 5798937Sdes User ${USER} 5898937Sdes Host 127.0.0.1 5998937Sdes IdentityFile ${OBJ}/id.list 6098937Sdes RandomSeedFile ${OBJ}/random_seed 6198937Sdes UserConfigDirectory ${OBJ}/%U 6298937Sdes AuthenticationSuccessMsg no 6398937Sdes BatchMode yes 6498937Sdes ForwardX11 no 6598937SdesEOF 6698937Sdes 6798937Sdes# we need a real server (no ProxyConnect option) 6898937Sdesstart_sshd 6998937Sdes 7098937Sdes# go for it 7198937Sdesfor v in ${VERSIONS}; do 7298937Sdes ssh2=${TEST_COMBASE}/${v}/ssh2 7398937Sdes if [ ! -x ${ssh2} ]; then 7498937Sdes continue 7598937Sdes fi 7698937Sdes verbose "ssh2 ${v}" 7798937Sdes key=ssh-dss 7898937Sdes skipcat=0 7998937Sdes case $v in 8098937Sdes 2.1.*|2.3.0) 8198937Sdes skipcat=1 8298937Sdes ;; 8398937Sdes 3.0.*) 8498937Sdes key=ssh-rsa 8598937Sdes ;; 8698937Sdes esac 8798937Sdes cp ${HK}.$key.pub ${HK}.pub 8898937Sdes 8998937Sdes # check exit status 9098937Sdes ${ssh2} -q -F ${OBJ}/ssh2_config somehost exit 42 9198937Sdes r=$? 9298937Sdes if [ $r -ne 42 ]; then 9398937Sdes fail "ssh2 ${v} exit code test failed (got $r, expected 42)" 9498937Sdes fi 9598937Sdes 9698937Sdes # data transfer 9798937Sdes rm -f ${COPY} 9898937Sdes ${ssh2} -F ${OBJ}/ssh2_config somehost cat ${DATA} > ${COPY} 9998937Sdes if [ $? -ne 0 ]; then 10098937Sdes fail "ssh2 ${v} cat test (receive) failed" 10198937Sdes fi 10298937Sdes cmp ${DATA} ${COPY} || fail "ssh2 ${v} cat test (receive) data mismatch" 10398937Sdes 10498937Sdes # data transfer, again 10598937Sdes if [ $skipcat -eq 0 ]; then 10698937Sdes rm -f ${COPY} 10798937Sdes cat ${DATA} | \ 10898937Sdes ${ssh2} -F ${OBJ}/ssh2_config host "cat > ${COPY}" 10998937Sdes if [ $? -ne 0 ]; then 11098937Sdes fail "ssh2 ${v} cat test (send) failed" 11198937Sdes fi 11298937Sdes cmp ${DATA} ${COPY} || \ 11398937Sdes fail "ssh2 ${v} cat test (send) data mismatch" 11498937Sdes fi 11598937Sdes 11698937Sdes # no stderr after eof 11798937Sdes rm -f ${COPY} 11898937Sdes ${ssh2} -F ${OBJ}/ssh2_config somehost \ 11998937Sdes exec sh -c \'"exec > /dev/null; sleep 1; echo bla 1>&2; exit 0"\' \ 12098937Sdes 2> /dev/null 12198937Sdes if [ $? -ne 0 ]; then 12298937Sdes fail "ssh2 ${v} stderr test failed" 12398937Sdes fi 12498937Sdesdone 12598937Sdes 12698937Sdesrm -rf ${OBJ}/${USER} 12798937Sdesfor i in ssh2_config random_seed dsa.pub dsa host.dsa \ 12898937Sdes id.list id.com id.com.pub id.openssh; do 12998937Sdes rm -f ${OBJ}/$i 13098937Sdesdone 131