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