Chat over SSH.
Go to file
Andrey Petrov 4dd80fb822 Tests pass. 2015-01-01 18:51:34 -08:00
chat Tests pass. 2015-01-01 18:51:34 -08:00
sshd Channel Member now wrapping User with metadata, new Auth struct. 2015-01-01 18:40:10 -08:00
.gitignore Fix crash bug. 2014-12-16 14:29:45 -08:00
.travis.yml Run golint via fgt before the tests 2014-12-15 02:32:13 +01:00
Dockerfile Add example header. 2014-12-14 17:47:55 -08:00
LICENSE LICENSE, todo. 2014-12-12 17:52:05 -08:00
Makefile Added Host struct. 2014-12-25 00:09:43 -08:00
README.md Update README and cmd descriptions. 2014-12-14 21:03:11 -08:00
auth.go Tests pass. 2015-01-01 18:51:34 -08:00
cmd.go Channel Member now wrapping User with metadata, new Auth struct. 2015-01-01 18:40:10 -08:00
host.go Tests pass. 2015-01-01 18:51:34 -08:00
host_test.go Themes are working, and /theme command. 2014-12-26 17:40:57 -08:00
logger.go Progress: Echo working. 2014-12-06 23:31:23 -08:00
motd.txt Fix motd, invalid fingerprint, no auth whitelist. 2014-12-16 20:15:37 -08:00

README.md

Build Status

ssh-chat

Custom SSH server written in Go. Instead of a shell, you get a chat prompt.

Demo

Join the party:

$ ssh chat.shazow.net

The server's RSA key fingerprint is e5:d5:d1:75:90:38:42:f6:c7:03:d7:d0:56:7d:6a:db. If you see something different, you might be MITM'd.

(Apologies if the server is down, try again shortly.)

Quick Start

Usage:
  ssh-chat [OPTIONS]

Application Options:
  -v, --verbose    Show verbose logging.
  -i, --identity=  Private key to identify server with. (~/.ssh/id_rsa)
      --bind=      Host and port to listen on. (0.0.0.0:22)
      --admin=     Fingerprint of pubkey to mark as admin.
      --whitelist= Optional file of pubkey fingerprints that are allowed to connect
      --motd=      Message of the Day file (optional)
      --pprof=     enable http server for pprof

Help Options:
  -h, --help       Show this help message

After doing go get github.com/shazow/ssh-chat on this repo, you should be able to run a command like:

$ ssh-chat --verbose --bind ":2022" --identity ~/.ssh/id_dsa

To bind on port 22, you'll need to make sure it's free (move any other ssh daemons to another port) and run ssh-chat as root (or with sudo).

Deploying with Docker

You can run ssh-chat using a Docker image without manually installing go-lang:

$ docker pull alvin/ssh-chat
$ docker run -d -p 0.0.0.0:(your host machine port):2022 --name ssh-chat alvin/ssh-chat

See notes in the header of our Dockerfile for details on building your own image.

Developing

If you're developing on this repo, there is a handy Makefile that should set things up with make run.

Additionally, make debug runs the server with an http pprof server. This allows you to open http://localhost:6060/debug/pprof/ and view profiling data. See net/http/pprof for more information about pprof.

License

MIT