File: libssh-server

package info (click to toggle)
libssh 0.9.8-0%2Bdeb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 5,300 kB
  • sloc: ansic: 78,113; cpp: 480; sh: 65; makefile: 41; javascript: 20; python: 9
file content (68 lines) | stat: -rwxr-xr-x 1,911 bytes parent folder | download
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
#!/bin/sh
set -eu

PORT=1234

check_out() {
    if [ "$OUT" != "$(cat /etc/os-release)" ]; then
        echo "ssh command output does not match /etc/os-release:" >&2
        echo "$OUT" >&2
        exit 1
    fi
}

waitpid() {
    while kill -n 0 $1 2>/dev/null; do
        sleep 0.1
    done
}

if [ -n "${DEB_HOST_GNU_TYPE:-}" ]; then
    CROSS_COMPILE="$DEB_HOST_GNU_TYPE-"
else
    CROSS_COMPILE=
fi

# change to debian/tests so that mock-sshd can find its keys
cd $(dirname $(realpath $0))
SSHD="$AUTOPKGTEST_TMP/mock-sshd"

# build server
${CROSS_COMPILE}gcc -O0 -g -o "$SSHD" mock-sshd.c $(${CROSS_COMPILE}pkg-config --cflags --libs glib-2.0 libssh) -lutil

echo "====== password authentication ======"

# run server
SERVER_PID=$($SSHD --user=joe --password=$(./mock-ssh-askpass) --port $PORT -v)

OUT=$(DISPLAY= SSH_ASKPASS=`pwd`/mock-ssh-askpass SSH_ASKPASS_REQUIRE=force setsid ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p $PORT joe@localhost cat /etc/os-release)

waitpid $SERVER_PID
check_out

echo "====== pubkey authentication ======"

# run server
SERVER_PID=$($SSHD --user=joe --port $PORT -v)

chmod 600 test_rsa
OUT=$(ssh -i test_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p $PORT joe@localhost cat /etc/os-release)

waitpid $SERVER_PID
check_out

echo "====== password authentication with valgrind ======"

# run server
SERVER_PID=$(valgrind $SSHD --user=joe --password=$(./mock-ssh-askpass) --port $PORT -v)

# HACK: default curve25519-sha256 algorithm fails under valgrind and 32 bit OSes
EXTRA_OPTS=""
if [ "$(getconf LONG_BIT)" = 32 ]; then
    EXTRA_OPTS="$EXTRA_OPTS -o KexAlgorithms=ecdh-sha2-nistp256"
fi

OUT=$(DISPLAY= SSH_ASKPASS=`pwd`/mock-ssh-askpass SSH_ASKPASS_REQUIRE=force setsid ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $EXTRA_OPTS -p $PORT joe@localhost cat /etc/os-release)

waitpid $SERVER_PID
check_out