1*55727a17Sdtucker# $OpenBSD: ssh-com-client.sh,v 1.7 2013/05/17 04:29:14 dtucker Exp $ 2dc38cc98Smarkus# Placed in the Public Domain. 3dc38cc98Smarkus 4dc38cc98Smarkustid="connect with ssh.com client" 5dc38cc98Smarkus 6dc38cc98Smarkus#TEST_COMBASE=/path/to/ssh/com/binaries 7dc38cc98Smarkusif [ "X${TEST_COMBASE}" = "X" ]; then 8dc38cc98Smarkus fatal '$TEST_COMBASE is not set' 9dc38cc98Smarkusfi 10dc38cc98Smarkus 11dc38cc98SmarkusVERSIONS=" 12dc38cc98Smarkus 2.1.0 13dc38cc98Smarkus 2.2.0 14dc38cc98Smarkus 2.3.0 15dc38cc98Smarkus 2.3.1 16dc38cc98Smarkus 2.4.0 17dc38cc98Smarkus 3.0.0 18de247f79Smarkus 3.1.0 19de247f79Smarkus 3.2.0 20357f04a7Smarkus 3.2.2 21357f04a7Smarkus 3.2.3 2246c9f5bfSmarkus 3.2.5 2346c9f5bfSmarkus 3.2.9 2446c9f5bfSmarkus 3.2.9.1 25de247f79Smarkus 3.3.0" 26dc38cc98Smarkus 27dc38cc98Smarkus# 2.0.10 2.0.12 2.0.13 don't like the test setup 28dc38cc98Smarkus 29dc38cc98Smarkus# setup authorized keys 30dc38cc98SmarkusSRC=`dirname ${SCRIPT}` 31dc38cc98Smarkuscp ${SRC}/dsa_ssh2.prv ${OBJ}/id.com 32dc38cc98Smarkuschmod 600 ${OBJ}/id.com 33dc38cc98Smarkus${SSHKEYGEN} -i -f ${OBJ}/id.com > $OBJ/id.openssh 34dc38cc98Smarkuschmod 600 ${OBJ}/id.openssh 35dc38cc98Smarkus${SSHKEYGEN} -y -f ${OBJ}/id.openssh > $OBJ/authorized_keys_$USER 36dc38cc98Smarkus${SSHKEYGEN} -e -f ${OBJ}/id.openssh > $OBJ/id.com.pub 37dc38cc98Smarkusecho IdKey ${OBJ}/id.com > ${OBJ}/id.list 38dc38cc98Smarkus 39dc38cc98Smarkus# we need a DSA host key 40dc38cc98Smarkust=dsa 41dc38cc98Smarkusrm -f ${OBJ}/$t ${OBJ}/$t.pub 42dc38cc98Smarkus${SSHKEYGEN} -q -N '' -t $t -f ${OBJ}/$t 43dc38cc98Smarkus$SUDO cp $OBJ/$t $OBJ/host.$t 44dc38cc98Smarkusecho HostKey $OBJ/host.$t >> $OBJ/sshd_config 45dc38cc98Smarkus 46dc38cc98Smarkus# add hostkeys to known hosts 47dc38cc98Smarkusmkdir -p ${OBJ}/${USER}/hostkeys 48dc38cc98SmarkusHK=${OBJ}/${USER}/hostkeys/key_${PORT}_127.0.0.1 49dc38cc98Smarkus${SSHKEYGEN} -e -f ${OBJ}/rsa.pub > ${HK}.ssh-rsa.pub 50dc38cc98Smarkus${SSHKEYGEN} -e -f ${OBJ}/dsa.pub > ${HK}.ssh-dss.pub 51dc38cc98Smarkus 52dc38cc98Smarkuscat > ${OBJ}/ssh2_config << EOF 53dc38cc98Smarkus*: 54dc38cc98Smarkus QuietMode yes 55dc38cc98Smarkus StrictHostKeyChecking yes 56dc38cc98Smarkus Port ${PORT} 57dc38cc98Smarkus User ${USER} 58dc38cc98Smarkus Host 127.0.0.1 59dc38cc98Smarkus IdentityFile ${OBJ}/id.list 60dc38cc98Smarkus RandomSeedFile ${OBJ}/random_seed 61dc38cc98Smarkus UserConfigDirectory ${OBJ}/%U 62dc38cc98Smarkus AuthenticationSuccessMsg no 63dc38cc98Smarkus BatchMode yes 644485534bSmarkus ForwardX11 no 65dc38cc98SmarkusEOF 66dc38cc98Smarkus 67dc38cc98Smarkus# we need a real server (no ProxyConnect option) 68dc38cc98Smarkusstart_sshd 69dc38cc98Smarkus 70dc38cc98Smarkus# go for it 71dc38cc98Smarkusfor v in ${VERSIONS}; do 72dc38cc98Smarkus ssh2=${TEST_COMBASE}/${v}/ssh2 73dc38cc98Smarkus if [ ! -x ${ssh2} ]; then 74dc38cc98Smarkus continue 75dc38cc98Smarkus fi 76dc38cc98Smarkus verbose "ssh2 ${v}" 77dc38cc98Smarkus key=ssh-dss 78dc38cc98Smarkus skipcat=0 79dc38cc98Smarkus case $v in 80dc38cc98Smarkus 2.1.*|2.3.0) 81dc38cc98Smarkus skipcat=1 82dc38cc98Smarkus ;; 83dc38cc98Smarkus 3.0.*) 84dc38cc98Smarkus key=ssh-rsa 85dc38cc98Smarkus ;; 86dc38cc98Smarkus esac 87dc38cc98Smarkus cp ${HK}.$key.pub ${HK}.pub 88dc38cc98Smarkus 89dc38cc98Smarkus # check exit status 90dc38cc98Smarkus ${ssh2} -q -F ${OBJ}/ssh2_config somehost exit 42 91dc38cc98Smarkus r=$? 92dc38cc98Smarkus if [ $r -ne 42 ]; then 93dc38cc98Smarkus fail "ssh2 ${v} exit code test failed (got $r, expected 42)" 94dc38cc98Smarkus fi 95dc38cc98Smarkus 96dc38cc98Smarkus # data transfer 97dc38cc98Smarkus rm -f ${COPY} 98dc38cc98Smarkus ${ssh2} -F ${OBJ}/ssh2_config somehost cat ${DATA} > ${COPY} 99dc38cc98Smarkus if [ $? -ne 0 ]; then 100dc38cc98Smarkus fail "ssh2 ${v} cat test (receive) failed" 101dc38cc98Smarkus fi 102dc38cc98Smarkus cmp ${DATA} ${COPY} || fail "ssh2 ${v} cat test (receive) data mismatch" 103dc38cc98Smarkus 104dc38cc98Smarkus # data transfer, again 105dc38cc98Smarkus if [ $skipcat -eq 0 ]; then 106dc38cc98Smarkus rm -f ${COPY} 107dc38cc98Smarkus cat ${DATA} | \ 108dc38cc98Smarkus ${ssh2} -F ${OBJ}/ssh2_config host "cat > ${COPY}" 109dc38cc98Smarkus if [ $? -ne 0 ]; then 110dc38cc98Smarkus fail "ssh2 ${v} cat test (send) failed" 111dc38cc98Smarkus fi 112dc38cc98Smarkus cmp ${DATA} ${COPY} || \ 113dc38cc98Smarkus fail "ssh2 ${v} cat test (send) data mismatch" 114dc38cc98Smarkus fi 115dc38cc98Smarkus 116dc38cc98Smarkus # no stderr after eof 117dc38cc98Smarkus rm -f ${COPY} 118dc38cc98Smarkus ${ssh2} -F ${OBJ}/ssh2_config somehost \ 119dc38cc98Smarkus exec sh -c \'"exec > /dev/null; sleep 1; echo bla 1>&2; exit 0"\' \ 120dc38cc98Smarkus 2> /dev/null 121dc38cc98Smarkus if [ $? -ne 0 ]; then 122dc38cc98Smarkus fail "ssh2 ${v} stderr test failed" 123dc38cc98Smarkus fi 124dc38cc98Smarkusdone 125dc38cc98Smarkus 126dc38cc98Smarkusrm -rf ${OBJ}/${USER} 127aa913d22Smarkusfor i in ssh2_config random_seed dsa.pub dsa host.dsa \ 128dc38cc98Smarkus id.list id.com id.com.pub id.openssh; do 129dc38cc98Smarkus rm -f ${OBJ}/$i 130dc38cc98Smarkusdone 131