Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jedi4ever/test-sshd.js

launches an sshd server to test against that will echo commands back
https://github.com/jedi4ever/test-sshd.js

Last synced: about 1 month ago
JSON representation

launches an sshd server to test against that will echo commands back

Awesome Lists containing this project

README

        

# Description
**Test-sshd**(nodejs) allows you to start a local sshd daemon that you can test against.

> Because there is nothing like the real thing

Way too many code that uses ssh/sftp isn't tested because mocking and stubbing sshd servers is hard.

# How
It starts a sshd with the correct arguments so that:

- you can login as the current user (process.env.user)
- using the test key provided (in config/keys/id_rsa)
- on a port you specify
- (mode: echo ) if login succeeds it uses `ForceCommand` to echo the command in `$SSH_ORIGINAL_COMMAND`
- (mode: exec ) if login succeeds it uses executes the command
- (mode: transfer ) if login succeeds it allows for sftp
- it does NOT do password authentication (yet)

# Usage

var TestSshd = require('test-sshd');
var sshd = TestSshd({port: 4000};

var connectParams = sshd.connectParams();

sshd.on('ready', function() {
// When login is working
console.log('ready to login');
});

sshd.on('error', function(error) {
// When sshd has an error
});

sshd.on('stdout', function(data) {
// receive sshd stdout
});

sshd.on('stderr', function(data) {
// receive sshd stderr
});

sshd.on('exit', function() {
// when daemon exit
});

sshd.start();

// Make sure to stop the sshd stop when the process exits
// This prevents orphaned processes
process.on('exit', function() {
if(sshd.status === 'started') {
sshd.stop();
}
});

# Code information
## Getters
- `status`: either 'started' or 'stopped'
- `settings`: contains params used to initialize the sshd

## Options
- `port`: **integer** defdults to 4000
- `mode`: **string** default to `echo` (other options are `exec`, `transfer`)

## Events
- `ready`: when the sshd is succesfully listening
- `exit`: when the sshd exits
- `error`: when an error occurs

## ConnectParams()
This is a hash with;

- `host` : **string** host to connect to
- `username`: **string** username to connect with
- `port`: **integer** port it listens on
- `privateKey`: **string** key that can be used to connect

# License
MIT