ssh-com-client.sh revision 124208
1124208Sdes#	$OpenBSD: ssh-com-client.sh,v 1.5 2003/05/14 22:08:27 markus 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
22113908Sdes	3.3.0"
2398937Sdes
2498937Sdes# 2.0.10 2.0.12 2.0.13 don't like the test setup
2598937Sdes
2698937Sdes# setup authorized keys
2798937SdesSRC=`dirname ${SCRIPT}`
2898937Sdescp ${SRC}/dsa_ssh2.prv ${OBJ}/id.com
2998937Sdeschmod 600 ${OBJ}/id.com
3098937Sdes${SSHKEYGEN} -i -f ${OBJ}/id.com	> $OBJ/id.openssh
3198937Sdeschmod 600 ${OBJ}/id.openssh
3298937Sdes${SSHKEYGEN} -y -f ${OBJ}/id.openssh	> $OBJ/authorized_keys_$USER
3398937Sdes${SSHKEYGEN} -e -f ${OBJ}/id.openssh	> $OBJ/id.com.pub
3498937Sdesecho IdKey ${OBJ}/id.com > ${OBJ}/id.list
3598937Sdes
3698937Sdes# we need a DSA host key
3798937Sdest=dsa
3898937Sdesrm -f                             ${OBJ}/$t ${OBJ}/$t.pub
3998937Sdes${SSHKEYGEN} -q -N '' -t $t -f	  ${OBJ}/$t
4098937Sdes$SUDO cp $OBJ/$t $OBJ/host.$t
4198937Sdesecho HostKey $OBJ/host.$t >> $OBJ/sshd_config
4298937Sdes
4398937Sdes# add hostkeys to known hosts
4498937Sdesmkdir -p ${OBJ}/${USER}/hostkeys
4598937SdesHK=${OBJ}/${USER}/hostkeys/key_${PORT}_127.0.0.1
4698937Sdes${SSHKEYGEN} -e -f ${OBJ}/rsa.pub > ${HK}.ssh-rsa.pub
4798937Sdes${SSHKEYGEN} -e -f ${OBJ}/dsa.pub > ${HK}.ssh-dss.pub
4898937Sdes
4998937Sdescat > ${OBJ}/ssh2_config << EOF
5098937Sdes*:
5198937Sdes	QuietMode			yes
5298937Sdes	StrictHostKeyChecking		yes
5398937Sdes	Port				${PORT}
5498937Sdes	User				${USER}
5598937Sdes	Host				127.0.0.1
5698937Sdes	IdentityFile			${OBJ}/id.list
5798937Sdes	RandomSeedFile			${OBJ}/random_seed
5898937Sdes        UserConfigDirectory             ${OBJ}/%U
5998937Sdes	AuthenticationSuccessMsg	no
6098937Sdes	BatchMode			yes
6198937Sdes	ForwardX11			no
6298937SdesEOF
6398937Sdes
6498937Sdes# we need a real server (no ProxyConnect option)
6598937Sdesstart_sshd
6698937Sdes
67124208SdesDATA=/bin/ls${EXEEXT}
6898937SdesCOPY=${OBJ}/copy
6998937Sdesrm -f ${COPY}
7098937Sdes
7198937Sdes# go for it
7298937Sdesfor v in ${VERSIONS}; do
7398937Sdes	ssh2=${TEST_COMBASE}/${v}/ssh2
7498937Sdes	if [ ! -x ${ssh2} ]; then
7598937Sdes		continue
7698937Sdes	fi
7798937Sdes	verbose "ssh2 ${v}"
7898937Sdes	key=ssh-dss
7998937Sdes	skipcat=0
8098937Sdes        case $v in
8198937Sdes        2.1.*|2.3.0)
8298937Sdes                skipcat=1
8398937Sdes                ;;
8498937Sdes        3.0.*)
8598937Sdes                key=ssh-rsa
8698937Sdes                ;;
8798937Sdes        esac
8898937Sdes	cp ${HK}.$key.pub ${HK}.pub
8998937Sdes
9098937Sdes	# check exit status
9198937Sdes	${ssh2} -q -F ${OBJ}/ssh2_config somehost exit 42
9298937Sdes	r=$?
9398937Sdes        if [ $r -ne 42 ]; then
9498937Sdes                fail "ssh2 ${v} exit code test failed (got $r, expected 42)"
9598937Sdes        fi
9698937Sdes
9798937Sdes	# data transfer
9898937Sdes	rm -f ${COPY}
9998937Sdes	${ssh2} -F ${OBJ}/ssh2_config somehost cat ${DATA} > ${COPY}
10098937Sdes        if [ $? -ne 0 ]; then
10198937Sdes                fail "ssh2 ${v} cat test (receive) failed"
10298937Sdes        fi
10398937Sdes	cmp ${DATA} ${COPY}	|| fail "ssh2 ${v} cat test (receive) data mismatch"
10498937Sdes
10598937Sdes	# data transfer, again
10698937Sdes	if [ $skipcat -eq 0 ]; then
10798937Sdes		rm -f ${COPY}
10898937Sdes		cat ${DATA} | \
10998937Sdes			${ssh2} -F ${OBJ}/ssh2_config host "cat > ${COPY}"
11098937Sdes		if [ $? -ne 0 ]; then
11198937Sdes			fail "ssh2 ${v} cat test (send) failed"
11298937Sdes		fi
11398937Sdes		cmp ${DATA} ${COPY}	|| \
11498937Sdes			fail "ssh2 ${v} cat test (send) data mismatch"
11598937Sdes	fi
11698937Sdes
11798937Sdes	# no stderr after eof
11898937Sdes	rm -f ${COPY}
11998937Sdes	${ssh2} -F ${OBJ}/ssh2_config somehost \
12098937Sdes		exec sh -c \'"exec > /dev/null; sleep 1; echo bla 1>&2; exit 0"\' \
12198937Sdes		2> /dev/null
12298937Sdes        if [ $? -ne 0 ]; then
12398937Sdes                fail "ssh2 ${v} stderr test failed"
12498937Sdes        fi
12598937Sdesdone
12698937Sdes
12798937Sdesrm -rf ${OBJ}/${USER}
12898937Sdesfor i in ssh2_config random_seed dsa.pub dsa host.dsa \
12998937Sdes    id.list id.com id.com.pub id.openssh; do
13098937Sdes	rm -f ${OBJ}/$i
13198937Sdesdone
132