Skip to content

Commit

Permalink
Merge pull request #7 from Stocard/tests
Browse files Browse the repository at this point in the history
Adds test setup and first tests
  • Loading branch information
Junkern authored Aug 29, 2018
2 parents 29066b8 + e4b7020 commit 3c12c50
Show file tree
Hide file tree
Showing 14 changed files with 514 additions and 123 deletions.
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,16 @@ Possible options for `forwardOptions`:

Closes all connections.

## Developing

* Add your wanted feature to the implementation in `./src`
* Add test in `./test/test.ts`
* Run the test with `./test/test.sh`

## Limitations/Todos

* only works with username , private key and ssh agent
* host based authentication
* No tests
* Better documentation
* Debug logging
* Ability to pass an additional string to the `forward` that specifies when the promise is resolved and the forwarding is stopped
Expand Down
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,14 @@
"lint": "tslint -c tslint.json 'test/**/*.ts' 'src/**/*.ts'",
"clean": "rm -rf dist",
"build": "yarn clean && tsc",
"prepublish": "yarn build"
"prepublish": "yarn build",
"test": "./node_modules/mocha/bin/_mocha --ui bdd --recursive --timeout 30000 --require ts-node/register \"test/test.ts\""
},
"devDependencies": {
"@types/mocha": "^5.2.5",
"@types/node": "^10.3.1",
"@types/ssh2": "^0.5.35",
"mocha": "^5.2.0",
"ts-node": "^6.1.0",
"tslint": "^5.10.0",
"tslint-config-airbnb": "^5.9.2",
Expand Down
23 changes: 23 additions & 0 deletions test/client/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM stocard/node:8.11
COPY ./package.json ./package.json
COPY ./yarn.lock ./yarn.lock
RUN yarn install --silent --frozen-lockfile

COPY ./tsconfig.json ./
COPY ./tslint.json ./
COPY ./src ./src
RUN yarn build

# adds the ssh keys
COPY ./test/keys /root/.ssh/

# add the non protected key as the standard key
COPY ./test/keys/id_rsa_no_pass /root/.ssh/id_rsa
COPY ./test/keys/id_rsa_no_pass.pub /root/.ssh/id_rsa.pub


# COPY ./dist ./dist
COPY ./test ./test


CMD ["yarn", "test"]
16 changes: 16 additions & 0 deletions test/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
version: "3.2"
services:
server:
ports:
- 22:22
build:
context: ./
dockerfile: ./server/Dockerfile

tester:
build:
context: ../
dockerfile: ./test/client/Dockerfile
depends_on:
- server

2 changes: 2 additions & 0 deletions test/keys/authorized_keys
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCVZhjIJ/qfg1i8QsIbn6Vhhvh0OqSFrCK7837F2KuIhoIzP0MtqnL+Mxmg7/TxEh5KvZUWtVRoZsfdgG9aUtgb8YE1fCghJPmXqR2KKbWCVmSCm3BCmGJ0RbscUVOIZ+8aQKWSqZk6M7Bykvxc0HOdJzyMqrcT6cUhYKG0NJRRUysga+D3Bfnhwz7rieAb7C7v+dQhaJGmfXLQpC27/F5rGh5REVv44S4C+FcL2Wl6Gl9Cjjtcr/fc5jd0DfEE4o4rhC80/DjemBo67Qg63S6e1Cmdp8Y9PB5UgveqBNIwZCDzRGNimmD1aFor86oF4U0CkYHSb2lvoHZpV6g+XY6dZ5NhSib7OrM7LgB80RiO6hEbiPc2T8B1VL+R6G++KXc5z9ZOAgdWCCPirLWMF8RXhxiFJ/OnAyWBZsL9Q4j/pOtBWndZqBVLpaf4ko3yT/kxKVw8NcV8EHn6N9NFzIiQzlIG9B2QQ/Se0sLTcPBDGHqL8oGN1+I9Bv2Um5jnmmwTJO4+DDRvknuFsjpr7eYAZXdPLpyVIDLkA8PdbhgOzosofRmX9rokDac+kLxfaRl+C35+cto/orHaqR7XHs0LOe7Wg8TlO46VbFuMPG98pQBP+GUP440TY8U/vj9aIBD/BY9QJJAhgbF16D2CUTM95VA4I9ZZyFHyKwRZHF2vpw== [email protected]
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf/1Fs4Fr8Y/1PA4pDnTSMOG6Af//L5wQJAKleW5lA5+OUiqkYwudM9z/e5pD3/jGKtYNuAr7PUnGNbAsSy73ac5APPyHYxl9fv39ZEXrGvVOX8tAsQa0LvuQeEaVWqDoKoNlbFMIvZuDuYdwc5UB47ykX9OY+3roA1yhbCY54Ts2xYVzGYzFUtNr2ctg0h8veB05zZIE2XCNC3tycdR7KCGFb9cemDXxaFA3YVpNMq1ui3U1pFpNEiCSFmIzaMlIX2nOcHBW7b7DvAybzuNz114ymkB9cvH4IX9+ci1h3yu7oTTVR5bnyq2/wGlSmZzCdD2WIy2hZXd4AELWDdE3GgMCOMjQDhHkdfkROBdTODSKL5E6Wsw2XeKZq8lPZgUYBM2Q3hL1ans/5zO5llXRxl/KmrJMgMwRGnNuup3rPi5faw21BYc07hEo+Z/idvJS8iGOuxb+p0cQh072L9vh1zpUVxVenzdDuxHRRYzRl6qk2kvEQtjoHZlnRG//emi/jk1ULNO5qd4+YhHllMIxYDlJwndEW7GQoEmCsVX/YNgLizCquFee8wj1NSoE0qXTiHMaOY2Bw6RYYSXr0/+fGk6dM8LY7OQHW13A5CgyE9OoHd39LiuE6mvAmbt+PpNWLBLVMi2QQd2xOXFvOVrTDUQXHr9RHbi2TBNMoVgVZVw== [email protected]
51 changes: 51 additions & 0 deletions test/keys/id_rsa_no_pass
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
1 change: 1 addition & 0 deletions test/keys/id_rsa_no_pass.pub
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCVZhjIJ/qfg1i8QsIbn6Vhhvh0OqSFrCK7837F2KuIhoIzP0MtqnL+Mxmg7/TxEh5KvZUWtVRoZsfdgG9aUtgb8YE1fCghJPmXqR2KKbWCVmSCm3BCmGJ0RbscUVOIZ+8aQKWSqZk6M7Bykvxc0HOdJzyMqrcT6cUhYKG0NJRRUysga+D3Bfnhwz7rieAb7C7v+dQhaJGmfXLQpC27/F5rGh5REVv44S4C+FcL2Wl6Gl9Cjjtcr/fc5jd0DfEE4o4rhC80/DjemBo67Qg63S6e1Cmdp8Y9PB5UgveqBNIwZCDzRGNimmD1aFor86oF4U0CkYHSb2lvoHZpV6g+XY6dZ5NhSib7OrM7LgB80RiO6hEbiPc2T8B1VL+R6G++KXc5z9ZOAgdWCCPirLWMF8RXhxiFJ/OnAyWBZsL9Q4j/pOtBWndZqBVLpaf4ko3yT/kxKVw8NcV8EHn6N9NFzIiQzlIG9B2QQ/Se0sLTcPBDGHqL8oGN1+I9Bv2Um5jnmmwTJO4+DDRvknuFsjpr7eYAZXdPLpyVIDLkA8PdbhgOzosofRmX9rokDac+kLxfaRl+C35+cto/orHaqR7XHs0LOe7Wg8TlO46VbFuMPG98pQBP+GUP440TY8U/vj9aIBD/BY9QJJAhgbF16D2CUTM95VA4I9ZZyFHyKwRZHF2vpw== [email protected]
54 changes: 54 additions & 0 deletions test/keys/id_rsa_pass
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,20EBEBDAEF502087A268D86E4697C64B

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
-----END RSA PRIVATE KEY-----
1 change: 1 addition & 0 deletions test/keys/id_rsa_pass.pub
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf/1Fs4Fr8Y/1PA4pDnTSMOG6Af//L5wQJAKleW5lA5+OUiqkYwudM9z/e5pD3/jGKtYNuAr7PUnGNbAsSy73ac5APPyHYxl9fv39ZEXrGvVOX8tAsQa0LvuQeEaVWqDoKoNlbFMIvZuDuYdwc5UB47ykX9OY+3roA1yhbCY54Ts2xYVzGYzFUtNr2ctg0h8veB05zZIE2XCNC3tycdR7KCGFb9cemDXxaFA3YVpNMq1ui3U1pFpNEiCSFmIzaMlIX2nOcHBW7b7DvAybzuNz114ymkB9cvH4IX9+ci1h3yu7oTTVR5bnyq2/wGlSmZzCdD2WIy2hZXd4AELWDdE3GgMCOMjQDhHkdfkROBdTODSKL5E6Wsw2XeKZq8lPZgUYBM2Q3hL1ans/5zO5llXRxl/KmrJMgMwRGnNuup3rPi5faw21BYc07hEo+Z/idvJS8iGOuxb+p0cQh072L9vh1zpUVxVenzdDuxHRRYzRl6qk2kvEQtjoHZlnRG//emi/jk1ULNO5qd4+YhHllMIxYDlJwndEW7GQoEmCsVX/YNgLizCquFee8wj1NSoE0qXTiHMaOY2Bw6RYYSXr0/+fGk6dM8LY7OQHW13A5CgyE9OoHd39LiuE6mvAmbt+PpNWLBLVMi2QQd2xOXFvOVrTDUQXHr9RHbi2TBNMoVgVZVw== [email protected]
16 changes: 16 additions & 0 deletions test/server/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
FROM ubuntu:16.04

RUN apt-get update
RUN apt-get -yq install openssh-server; \
mkdir -p /var/run/sshd; \
mkdir /root/.ssh && chmod 700 /root/.ssh; \
touch /root/.ssh/authorized_keys

COPY ./server/sshd_config /etc/ssh/sshd_config


COPY ./keys/authorized_keys /root/.ssh/authorized_keys


EXPOSE 22
CMD /usr/sbin/sshd -D
85 changes: 85 additions & 0 deletions test/server/sshd_config
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 1024

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
19 changes: 19 additions & 0 deletions test/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash
set -e

directory=$(pwd)
if [[ $directory == *"/test" ]]; then
cd ..
fi

docker-compose -f ./test/docker-compose.yml build
docker-compose -f ./test/docker-compose.yml up --force-recreate --abort-on-container-exit

CODE=0
docker-compose --file=./test/docker-compose.yml ps -q | xargs docker inspect -f '{{ .State.ExitCode }}' | while read code; do
if [ "$code" == "1" ]; then
CODE=-1
fi
done
docker-compose -f ./test/docker-compose.yml down
exit $CODE
39 changes: 39 additions & 0 deletions test/test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { SSHConnection } from '../dist/Connection'
import * as fs from 'fs'

describe('node-ssh-forward', async () => {
describe('Connect to a server', async () => {
it('with default path to the private key', async () => {
const ssh = new SSHConnection({
username: 'root',
endHost: 'server'
})
await ssh.executeCommand('uptime')
})
it.skip('with default path to the private key and ssh agent enabled ', async () => {
const ssh = new SSHConnection({
username: 'root',
endHost: 'server',
agentForward: true
})
await ssh.executeCommand('uptime')
})
it('with custom path to the private key', async () => {
const ssh = new SSHConnection({
username: 'root',
endHost: 'server',
privateKey: fs.readFileSync(`${__dirname}/keys/id_rsa_no_pass`),
})
await ssh.executeCommand('uptime')
})
it('with a passphrase protected private key', async () => {
const ssh = new SSHConnection({
username: 'root',
endHost: 'server',
privateKey: fs.readFileSync(`${__dirname}/keys/id_rsa_pass`),
passphrase: 'passphrase'
})
await ssh.executeCommand('uptime')
})
})
})
Loading

0 comments on commit 3c12c50

Please sign in to comment.