Initial import from FreeBSD RELENG_4:
[dragonfly.git] / crypto / openssh / regress / ssh-com-client.sh
1 #       $OpenBSD: ssh-com-client.sh,v 1.3 2002/04/10 08:45:30 markus Exp $
2 #       Placed in the Public Domain.
3
4 tid="connect with ssh.com client"
5
6 #TEST_COMBASE=/path/to/ssh/com/binaries
7 if [ "X${TEST_COMBASE}" = "X" ]; then
8         fatal '$TEST_COMBASE is not set'
9 fi
10
11 VERSIONS="
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
23 SRC=`dirname ${SCRIPT}`
24 cp ${SRC}/dsa_ssh2.prv ${OBJ}/id.com
25 chmod 600 ${OBJ}/id.com
26 ${SSHKEYGEN} -i -f ${OBJ}/id.com        > $OBJ/id.openssh
27 chmod 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
30 echo IdKey ${OBJ}/id.com > ${OBJ}/id.list
31
32 # we need a DSA host key
33 t=dsa
34 rm -f                             ${OBJ}/$t ${OBJ}/$t.pub
35 ${SSHKEYGEN} -q -N '' -t $t -f    ${OBJ}/$t
36 $SUDO cp $OBJ/$t $OBJ/host.$t
37 echo HostKey $OBJ/host.$t >> $OBJ/sshd_config
38
39 # add hostkeys to known hosts
40 mkdir -p ${OBJ}/${USER}/hostkeys
41 HK=${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
45 cat > ${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
57         ForwardX11                      no
58 EOF
59
60 # we need a real server (no ProxyConnect option)
61 start_sshd
62
63 DATA=/bin/ls
64 COPY=${OBJ}/copy
65 rm -f ${COPY}
66
67 # go for it
68 for v in ${VERSIONS}; do
69         ssh2=${TEST_COMBASE}/${v}/ssh2
70         if [ ! -x ${ssh2} ]; then
71                 continue
72         fi
73         verbose "ssh2 ${v}"
74         key=ssh-dss
75         skipcat=0
76         case $v in
77         2.1.*|2.3.0)
78                 skipcat=1
79                 ;;
80         3.0.*)
81                 key=ssh-rsa
82                 ;;
83         esac
84         cp ${HK}.$key.pub ${HK}.pub
85
86         # check exit status
87         ${ssh2} -q -F ${OBJ}/ssh2_config somehost exit 42
88         r=$?
89         if [ $r -ne 42 ]; then
90                 fail "ssh2 ${v} exit code test failed (got $r, expected 42)"
91         fi
92
93         # data transfer
94         rm -f ${COPY}
95         ${ssh2} -F ${OBJ}/ssh2_config somehost cat ${DATA} > ${COPY}
96         if [ $? -ne 0 ]; then
97                 fail "ssh2 ${v} cat test (receive) failed"
98         fi
99         cmp ${DATA} ${COPY}     || fail "ssh2 ${v} cat test (receive) data mismatch"
100
101         # data transfer, again
102         if [ $skipcat -eq 0 ]; then
103                 rm -f ${COPY}
104                 cat ${DATA} | \
105                         ${ssh2} -F ${OBJ}/ssh2_config host "cat > ${COPY}"
106                 if [ $? -ne 0 ]; then
107                         fail "ssh2 ${v} cat test (send) failed"
108                 fi
109                 cmp ${DATA} ${COPY}     || \
110                         fail "ssh2 ${v} cat test (send) data mismatch"
111         fi
112
113         # no stderr after eof
114         rm -f ${COPY}
115         ${ssh2} -F ${OBJ}/ssh2_config somehost \
116                 exec sh -c \'"exec > /dev/null; sleep 1; echo bla 1>&2; exit 0"\' \
117                 2> /dev/null
118         if [ $? -ne 0 ]; then
119                 fail "ssh2 ${v} stderr test failed"
120         fi
121 done
122
123 rm -rf ${OBJ}/${USER}
124 for i in ssh2_config random_seed dsa.pub dsa host.dsa \
125     id.list id.com id.com.pub id.openssh; do
126         rm -f ${OBJ}/$i
127 done