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