1 # $OpenBSD: test-exec.sh,v 1.25 2004/12/06 10:49:56 dtucker Exp $
2 # Placed in the Public Domain.
10 if [ ! -z "$TEST_SSH_PORT" ]; then
16 if [ -x /usr/ucb/whoami ]; then
17 USER=`/usr/ucb/whoami`
18 elif whoami >/dev/null 2>&1; then
25 if [ "x$OBJ" = "x" ]; then
26 echo '$OBJ not defined'
29 if [ ! -d $OBJ ]; then
30 echo "not a directory: $OBJ"
34 if [ "x$SCRIPT" = "x" ]; then
35 echo '$SCRIPT not defined'
38 if [ ! -f $SCRIPT ]; then
39 echo "not a file: $SCRIPT"
42 if $TEST_SHELL -n $SCRIPT; then
45 echo "syntax error in $SCRIPT"
56 SSHKEYSCAN=ssh-keyscan
58 SFTPSERVER=/usr/libexec/openssh/sftp-server
61 if [ "x$TEST_SSH_SSH" != "x" ]; then
64 if [ "x$TEST_SSH_SSHD" != "x" ]; then
65 SSHD="${TEST_SSH_SSHD}"
67 if [ "x$TEST_SSH_SSHAGENT" != "x" ]; then
68 SSHAGENT="${TEST_SSH_SSHAGENT}"
70 if [ "x$TEST_SSH_SSHADD" != "x" ]; then
71 SSHADD="${TEST_SSH_SSHADD}"
73 if [ "x$TEST_SSH_SSHKEYGEN" != "x" ]; then
74 SSHKEYGEN="${TEST_SSH_SSHKEYGEN}"
76 if [ "x$TEST_SSH_SSHKEYSCAN" != "x" ]; then
77 SSHKEYSCAN="${TEST_SSH_SSHKEYSCAN}"
79 if [ "x$TEST_SSH_SFTP" != "x" ]; then
80 SFTP="${TEST_SSH_SFTP}"
82 if [ "x$TEST_SSH_SFTPSERVER" != "x" ]; then
83 SFTPSERVER="${TEST_SSH_SFTPSERVER}"
85 if [ "x$TEST_SSH_SCP" != "x" ]; then
89 # Path to sshd must be absolute for rexec
90 if [ ! -x /$SSHD ]; then
94 # these should be used in tests
95 export SSH SSHD SSHAGENT SSHADD SSHKEYGEN SSHKEYSCAN SFTP SFTPSERVER SCP
96 #echo $SSH $SSHD $SSHAGENT $SSHADD $SSHKEYGEN $SSHKEYSCAN $SFTP $SFTPSERVER $SCP
101 if [ "x`echo -n`" = "x" ]; then
103 elif [ "x`echo '\c'`" = "x" ]; then
106 fatal "Don't know how to echo without newline."
116 if [ -x $i/$1 ]; then
127 if [ -f $PIDFILE ]; then
129 if [ "X$pid" = "X" ]; then
132 if [ $pid -lt 2 ]; then
133 echo bad pid for ssd: $pid
143 if [ "X$TEST_SSH_TRACE" = "Xyes" ]; then
150 if [ "X$TEST_SSH_QUIET" != "Xyes" ]; then
175 # create server config
176 cat << EOF > $OBJ/sshd_config
179 ListenAddress 127.0.0.1
182 AuthorizedKeysFile $OBJ/authorized_keys_%u
184 AcceptEnv _XXX_TEST_*
186 Subsystem sftp $SFTPSERVER
189 if [ ! -z "$TEST_SSH_SSHD_CONFOPTS" ]; then
190 trace "adding sshd_config option $TEST_SSH_SSHD_CONFOPTS"
191 echo "$TEST_SSH_SSHD_CONFOPTS" >> $OBJ/sshd_config
194 # server config for proxy connects
195 cp $OBJ/sshd_config $OBJ/sshd_proxy
197 # allow group-writable directories in proxy-mode
198 echo 'StrictModes no' >> $OBJ/sshd_proxy
200 # create client config
201 cat << EOF > $OBJ/ssh_config
204 HostKeyAlias localhost-with-alias
207 GlobalKnownHostsFile $OBJ/known_hosts
208 UserKnownHostsFile $OBJ/known_hosts
209 RSAAuthentication yes
210 PubkeyAuthentication yes
211 ChallengeResponseAuthentication no
212 HostbasedAuthentication no
213 PasswordAuthentication no
215 StrictHostKeyChecking yes
218 if [ ! -z "$TEST_SSH_SSH_CONFOPTS" ]; then
219 trace "adding ssh_config option $TEST_SSH_SSHD_CONFOPTS"
220 echo "$TEST_SSH_SSH_CONFOPTS" >> $OBJ/ssh_config
223 rm -f $OBJ/known_hosts $OBJ/authorized_keys_$USER
225 trace "generate keys"
226 for t in rsa rsa1; do
229 ${SSHKEYGEN} -q -N '' -t $t -f $OBJ/$t ||\
230 fail "ssh-keygen for $t failed"
232 # known hosts file for client
234 echon 'localhost-with-alias,127.0.0.1,::1 '
236 ) >> $OBJ/known_hosts
238 # setup authorized keys
239 cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER
240 echo IdentityFile $OBJ/$t >> $OBJ/ssh_config
242 # use key as host key, too
243 $SUDO cp $OBJ/$t $OBJ/host.$t
244 echo HostKey $OBJ/host.$t >> $OBJ/sshd_config
246 # don't use SUDO for proxy connect
247 echo HostKey $OBJ/$t >> $OBJ/sshd_proxy
249 chmod 644 $OBJ/authorized_keys_$USER
251 # create a proxy version of the client config
254 echo proxycommand ${SUDO} ${SSHD} -i -f $OBJ/sshd_proxy
258 ${SSHD} -t -f $OBJ/sshd_proxy || fatal "sshd_proxy broken"
263 $SUDO ${SSHD} -f $OBJ/sshd_config -t || fatal "sshd_config broken"
264 $SUDO ${SSHD} -f $OBJ/sshd_config
266 trace "wait for sshd"
268 while [ ! -f $PIDFILE -a $i -lt 10 ]; do
273 test -f $PIDFILE || fatal "no sshd running on port $PORT"
281 if [ $RESULT -eq 0 ]; then