mirror of
				https://github.com/PowerShell/Win32-OpenSSH.git
				synced 2025-11-04 13:44:35 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			131 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#	$OpenBSD: ssh-com-client.sh,v 1.7 2013/05/17 04:29:14 dtucker Exp $
 | 
						|
#	Placed in the Public Domain.
 | 
						|
 | 
						|
tid="connect with ssh.com client"
 | 
						|
 | 
						|
#TEST_COMBASE=/path/to/ssh/com/binaries
 | 
						|
if [ "X${TEST_COMBASE}" = "X" ]; then
 | 
						|
	fatal '$TEST_COMBASE is not set'
 | 
						|
fi
 | 
						|
 | 
						|
VERSIONS="
 | 
						|
	2.1.0
 | 
						|
	2.2.0
 | 
						|
	2.3.0
 | 
						|
	2.3.1
 | 
						|
	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 2.0.12 2.0.13 don't like the test setup
 | 
						|
 | 
						|
# setup authorized keys
 | 
						|
SRC=`dirname ${SCRIPT}`
 | 
						|
cp ${SRC}/dsa_ssh2.prv ${OBJ}/id.com
 | 
						|
chmod 600 ${OBJ}/id.com
 | 
						|
${SSHKEYGEN} -i -f ${OBJ}/id.com	> $OBJ/id.openssh
 | 
						|
chmod 600 ${OBJ}/id.openssh
 | 
						|
${SSHKEYGEN} -y -f ${OBJ}/id.openssh	> $OBJ/authorized_keys_$USER
 | 
						|
${SSHKEYGEN} -e -f ${OBJ}/id.openssh	> $OBJ/id.com.pub
 | 
						|
echo IdKey ${OBJ}/id.com > ${OBJ}/id.list
 | 
						|
 | 
						|
# we need a DSA host key
 | 
						|
t=dsa
 | 
						|
rm -f                             ${OBJ}/$t ${OBJ}/$t.pub
 | 
						|
${SSHKEYGEN} -q -N '' -t $t -f	  ${OBJ}/$t
 | 
						|
$SUDO cp $OBJ/$t $OBJ/host.$t
 | 
						|
echo HostKey $OBJ/host.$t >> $OBJ/sshd_config
 | 
						|
 | 
						|
# add hostkeys to known hosts
 | 
						|
mkdir -p ${OBJ}/${USER}/hostkeys
 | 
						|
HK=${OBJ}/${USER}/hostkeys/key_${PORT}_127.0.0.1
 | 
						|
${SSHKEYGEN} -e -f ${OBJ}/rsa.pub > ${HK}.ssh-rsa.pub
 | 
						|
${SSHKEYGEN} -e -f ${OBJ}/dsa.pub > ${HK}.ssh-dss.pub
 | 
						|
 | 
						|
cat > ${OBJ}/ssh2_config << EOF
 | 
						|
*:
 | 
						|
	QuietMode			yes
 | 
						|
	StrictHostKeyChecking		yes
 | 
						|
	Port				${PORT}
 | 
						|
	User				${USER}
 | 
						|
	Host				127.0.0.1
 | 
						|
	IdentityFile			${OBJ}/id.list
 | 
						|
	RandomSeedFile			${OBJ}/random_seed
 | 
						|
        UserConfigDirectory             ${OBJ}/%U
 | 
						|
	AuthenticationSuccessMsg	no
 | 
						|
	BatchMode			yes
 | 
						|
	ForwardX11			no
 | 
						|
EOF
 | 
						|
 | 
						|
# we need a real server (no ProxyConnect option)
 | 
						|
start_sshd
 | 
						|
 | 
						|
# go for it
 | 
						|
for v in ${VERSIONS}; do
 | 
						|
	ssh2=${TEST_COMBASE}/${v}/ssh2
 | 
						|
	if [ ! -x ${ssh2} ]; then
 | 
						|
		continue
 | 
						|
	fi
 | 
						|
	verbose "ssh2 ${v}"
 | 
						|
	key=ssh-dss
 | 
						|
	skipcat=0
 | 
						|
        case $v in
 | 
						|
        2.1.*|2.3.0)
 | 
						|
                skipcat=1
 | 
						|
                ;;
 | 
						|
        3.0.*)
 | 
						|
                key=ssh-rsa
 | 
						|
                ;;
 | 
						|
        esac
 | 
						|
	cp ${HK}.$key.pub ${HK}.pub
 | 
						|
 | 
						|
	# check exit status
 | 
						|
	${ssh2} -q -F ${OBJ}/ssh2_config somehost exit 42
 | 
						|
	r=$?
 | 
						|
        if [ $r -ne 42 ]; then
 | 
						|
                fail "ssh2 ${v} exit code test failed (got $r, expected 42)"
 | 
						|
        fi
 | 
						|
 | 
						|
	# data transfer
 | 
						|
	rm -f ${COPY}
 | 
						|
	${ssh2} -F ${OBJ}/ssh2_config somehost cat ${DATA} > ${COPY}
 | 
						|
        if [ $? -ne 0 ]; then
 | 
						|
                fail "ssh2 ${v} cat test (receive) failed"
 | 
						|
        fi
 | 
						|
	cmp ${DATA} ${COPY}	|| fail "ssh2 ${v} cat test (receive) data mismatch"
 | 
						|
 | 
						|
	# data transfer, again
 | 
						|
	if [ $skipcat -eq 0 ]; then
 | 
						|
		rm -f ${COPY}
 | 
						|
		cat ${DATA} | \
 | 
						|
			${ssh2} -F ${OBJ}/ssh2_config host "cat > ${COPY}"
 | 
						|
		if [ $? -ne 0 ]; then
 | 
						|
			fail "ssh2 ${v} cat test (send) failed"
 | 
						|
		fi
 | 
						|
		cmp ${DATA} ${COPY}	|| \
 | 
						|
			fail "ssh2 ${v} cat test (send) data mismatch"
 | 
						|
	fi
 | 
						|
 | 
						|
	# no stderr after eof
 | 
						|
	rm -f ${COPY}
 | 
						|
	${ssh2} -F ${OBJ}/ssh2_config somehost \
 | 
						|
		exec sh -c \'"exec > /dev/null; sleep 1; echo bla 1>&2; exit 0"\' \
 | 
						|
		2> /dev/null
 | 
						|
        if [ $? -ne 0 ]; then
 | 
						|
                fail "ssh2 ${v} stderr test failed"
 | 
						|
        fi
 | 
						|
done
 | 
						|
 | 
						|
rm -rf ${OBJ}/${USER}
 | 
						|
for i in ssh2_config random_seed dsa.pub dsa host.dsa \
 | 
						|
    id.list id.com id.com.pub id.openssh; do
 | 
						|
	rm -f ${OBJ}/$i
 | 
						|
done
 |