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