blob: 015ebbb8c0b92616697bdd5593851f4eb979edf2 [file] [log] [blame]
Damien Miller8b9cde72003-01-22 17:53:16 +11001# $OpenBSD: ssh-com-client.sh,v 1.4 2002/07/16 08:58:16 markus Exp $
Damien Miller38cd4352002-05-01 13:17:33 +10002# 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
Damien Miller8b9cde72003-01-22 17:53:16 +110018 3.1.0
19 3.2.0
20 3.3.0"
Damien Miller38cd4352002-05-01 13:17:33 +100021
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