launch a test sshd that can be used to test against

npm install test-sshd
5 downloads in the last week
20 downloads in the last month


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.


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)


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


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

Code information


  • status: either 'started' or 'stopped'
  • settings: contains params used to initialize the sshd


  • port: integer defdults to 4000
  • mode: string default to echo (other options are exec, transfer)


  • ready: when the sshd is succesfully listening
  • exit: when the sshd exits
  • error: when an error occurs


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



npm loves you