read -p "press enter to cleanup and remove tmp:"
echo "### stop sshd..."
- kill "$SSHD_PID"
+ kill %1
echo "### removing temp dir..."
rm -rf "$TEMPDIR"
+
+ wait
}
## setup trap
# copy in admin and testuser home to tmp
echo "### copying admin and testuser homes..."
-cp -r "$TESTDIR"/home/admin "$TEMPDIR"/
-cp -r "$TESTDIR"/home/testuser "$TEMPDIR"/
+cp -a "$TESTDIR"/home/admin "$TEMPDIR"/
+cp -a "$TESTDIR"/home/testuser "$TEMPDIR"/
+
+cat <<EOF > "$TEMPDIR"/testuser/.ssh/config
+UserKnownHostsFile $TEMPDIR/testuser/.ssh/known_hosts
+EOF
+cat <<EOF > "$TEMPDIR"/testuser/.monkeysphere/monkeysphere.conf
+KNOWN_HOSTS=$TEMPDIR/testuser/.ssh/known_hosts
+EOF
### SERVER TESTS
# launch test sshd with the new host key.
echo "### starting sshd..."
socat EXEC:"/usr/sbin/sshd -f ${SSHD_CONFIG} -i -d -d -d -D -e" "UNIX-LISTEN:${SOCKET}" 2> "$TEMPDIR"/sshd.log &
-export SSHD_PID=$!
-
### TESTUSER TESTS
# generate an auth subkey for the test user
echo "### generating key for testuser..."
MONKEYSPHERE_GNUPGHOME="$TEMPDIR"/testuser/.gnupg \
+SSH_ASKPASS=echo \
monkeysphere gen-subkey --expire 0
# add server key to testuser keychain
gpgadmin --armor --export "$HOSTKEYID" | \
GNUPGHOME="$TEMPDIR"/testuser/.gnupg gpg --import
-# connect to test sshd, using monkeysphere to verify the identity
-# before connection.
+# connect to test sshd, using monkeysphere-ssh-proxycommand to verify
+# the identity before connection. This should work in both directions!
echo "### testuser connecting to sshd socket..."
PROXY_COMMAND="monkeysphere-ssh-proxycommand --no-connect %h && socat STDIO UNIX:${SOCKET}"
-GNUPGHOME="$TEMPDIR"/testuser/.gnupg ssh -oProxyCommand="$PROXY_COMMAND" testhost
-
-# create a new client side key, certify it with the "CA", use it to
-# log in.
-## FIXME: implement!
+GNUPGHOME="$TEMPDIR"/testuser/.gnupg \
+MONKEYSPHERE_HOME="$TEMPDIR"/testuser/.monkeysphere \
+ ssh -F "$TEMPDIR"/testuser/.ssh/config -v -v -v -oProxyCommand="$PROXY_COMMAND" testhost