summaryrefslogtreecommitdiff
path: root/regress/usr.bin/ssh/ssh-com.sh
blob: 4371d5279746069eb9390101ddf6444bb0a7fab6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#	$OpenBSD: ssh-com.sh,v 1.9 2015/05/08 07:29:00 djm Exp $
#	Placed in the Public Domain.

tid="connect to ssh.com server"

#TEST_COMBASE=/path/to/ssh/com/binaries
if [ "X${TEST_COMBASE}" = "X" ]; then
	fatal '$TEST_COMBASE is not set'
fi

VERSIONS="
	2.0.12
	2.0.13
	2.1.0
	2.2.0
	2.3.0
	2.4.0
	3.0.0
	3.1.0
	3.2.0
	3.2.2
	3.2.3
	3.2.5
	3.2.9
	3.2.9.1
	3.3.0"
# 2.0.10 does not support UserConfigDirectory
# 2.3.1 requires a config in $HOME/.ssh2

SRC=`dirname ${SCRIPT}`

# ssh.com
cat << EOF > $OBJ/sshd2_config
#*:
	# Port and ListenAddress are not used.
	QuietMode			yes
	Port				4343
	ListenAddress			127.0.0.1
	UserConfigDirectory		${OBJ}/%U
	Ciphers				AnyCipher
	PubKeyAuthentication		yes
	#AllowedAuthentications		publickey
	AuthorizationFile		authorization
	HostKeyFile			${SRC}/dsa_ssh2.prv
	PublicHostKeyFile		${SRC}/dsa_ssh2.pub
	RandomSeedFile			${OBJ}/random_seed
	MaxConnections			0
	PermitRootLogin			yes
	VerboseMode			no
	CheckMail			no
	Ssh1Compatibility		no
EOF

# create client config
sed "s/HostKeyAlias.*/HostKeyAlias ssh2-localhost-with-alias/" \
	< $OBJ/ssh_config > $OBJ/ssh_config_com

# we need a DSA key for
rm -f                             ${OBJ}/dsa ${OBJ}/dsa.pub
${SSHKEYGEN} -q -N '' -t dsa -f	  ${OBJ}/dsa

# setup userdir, try rsa first
mkdir -p ${OBJ}/${USER}
cp /dev/null ${OBJ}/${USER}/authorization
for t in rsa dsa; do
	${SSHKEYGEN} -e -f ${OBJ}/$t.pub	>  ${OBJ}/${USER}/$t.com
	echo Key $t.com			>> ${OBJ}/${USER}/authorization
	echo IdentityFile ${OBJ}/$t	>> ${OBJ}/ssh_config_com
done

# convert and append DSA hostkey
(
	printf 'ssh2-localhost-with-alias,127.0.0.1,::1 '
	${SSHKEYGEN} -if ${SRC}/dsa_ssh2.pub
) >> $OBJ/known_hosts

# go for it
for v in ${VERSIONS}; do
	sshd2=${TEST_COMBASE}/${v}/sshd2
	if [ ! -x ${sshd2} ]; then
		continue
	fi
	trace "sshd2 ${v}"
	PROXY="proxycommand ${sshd2} -qif ${OBJ}/sshd2_config 2> /dev/null"
	${SSH} -qF ${OBJ}/ssh_config_com -o "${PROXY}" dummy exit 0
        if [ $? -ne 0 ]; then
                fail "ssh connect to sshd2 ${v} failed"
        fi

	ciphers="3des-cbc blowfish-cbc arcfour"
	macs="hmac-md5"
	case $v in
	2.4.*)
		ciphers="$ciphers cast128-cbc"
		macs="$macs hmac-sha1 hmac-sha1-96 hmac-md5-96"
		;;
	3.*)
		ciphers="$ciphers aes128-cbc cast128-cbc"
		macs="$macs hmac-sha1 hmac-sha1-96 hmac-md5-96"
		;;
	esac
	#ciphers="3des-cbc"
	for m in $macs; do
	for c in $ciphers; do
		trace "sshd2 ${v} cipher $c mac $m"
		verbose "test ${tid}: sshd2 ${v} cipher $c mac $m"
		${SSH} -c $c -m $m -qF ${OBJ}/ssh_config_com -o "${PROXY}" dummy exit 0
		if [ $? -ne 0 ]; then
			fail "ssh connect to sshd2 ${v} with $c/$m failed"
		fi
	done
	done
done

rm -rf ${OBJ}/${USER}
for i in sshd_config_proxy ssh_config_proxy random_seed \
	sshd2_config dsa.pub dsa ssh_config_com; do
	rm -f ${OBJ}/$i
done