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