Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Emulate SSH server for testing purposes

I have to write test for deployment script which uploads files through SSH, but I'd like to have it not depending on external servers configuration. This is how i see it:

  1. Create 2 SSH daemons without authentication on different ports of loopback interface.
  2. Run the deployment script on these two ports

The only question is how to run these dummy SSH daemons.

I use Python and Fabric.

like image 916
Dmitry Gladkov Avatar asked Jul 06 '10 12:07

Dmitry Gladkov


2 Answers

If you want full control over the server's actions (e.g. in order to simulate various problem conditions and thereby do a really thorough testing) I recommend twisted: as this article shows, it makes it really easy to set up your own custom SSH server.

If you'd rather use an existing ssh server, pick one from the list here (or use the one that comes with your system, if any; or maybe sshwindows if you're on windows) and run it with subprocess from Python as a part of starting up your tests.

like image 117
Alex Martelli Avatar answered Sep 24 '22 05:09

Alex Martelli


Reimplementing an SSH daemon is not trivial.

If your only problem is you don't want them depending on existing configurations, you can start up new sshd with -f to specify a specific configuration and -p to run on a given port.

You can use os.system to make calls to the shell:

os.system('sshd -f myconfig -p 22022')
like image 45
Donald Miner Avatar answered Sep 23 '22 05:09

Donald Miner