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