Skip to content
High-interaction MitM SSH honeypot
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Version 2 is under development. Please switch to the v2 branch, build, and run with -h.


High-interaction SSH honeypot (ok, it's really a logging ssh proxy).

Still more or less a work-in-progress. Feel free to go install this repository if you'd like to try it. Run it with -h to see more options. In particular, logging is kinda rough.

One of these days there'll be better documentation, really.

The general idea is that sshlowpot runs somewhere between the attacker and the real SSH server such that the attacker logs into the honeypot, and the honeypot logs into the server.


At this stage in its development, it's probably easier to find me on Freenode than anything, though reading the source is another option. It's not that painful. I can usually be found as magisterquis in #devious on freenode.


go install

If you don't have go available, feel free to ask me (or someone who does) for compiled binaries. They can be made for a bunch of different platforms.


Most of the options should be useable as-is. The ones I expect will need to be configured:

Option Use
-ck SSH identity file (i.e. id_rsa) to use to authenticate to the server.
-cs Server's address. Can be loopback, even.
-cu Ok, maybe root wasn't a great default. test is probably better.
-p Try 123456 or something more common than hunter2. Also see the -pf flag.
-sf Fingerprint of real server's Host Key (retreivable with `ssh-keyscan hostname 2>/dev/null

Please note by default the server listens on port 2222. You'll have to use pf or iptables or whatever other firewall to redirect the port. It's probably a really bad idea to run it as root. Don't do that.

There is a general log which goes to stdout. More granular logs go in a directory named conns by default (-d flag). At the moment, the granular logs also go to stderr.


Yes, please.


It's in Go, so, probably? Send me a pull request if it doesn't work.

You can’t perform that action at this time.