Chat over SSH.
Go to file
Andrey Petrov 7beb7f99bb Testing for net. 2014-12-22 15:53:30 -08:00
chat Message tests. 2014-12-21 14:30:42 -08:00
sshd Testing for net. 2014-12-22 15:53:30 -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 /version command that outputs commit the server was built on. 2014-12-17 20:22:51 -05:00
README.md Update README and cmd descriptions. 2014-12-14 21:03:11 -08:00
client.go Close connection on channel close? 2014-12-19 20:04:40 -08:00
cmd.go sshd abstraction might be done, untested. 2014-12-22 14:26:26 -08:00
colors.go Removed dark names, dont color join mesages. 2014-12-14 22:51:22 -08:00
history.go Fix all lint issues (mainly ALL_CAPS and comments) 2014-12-15 01:12:19 +01:00
history_test.go More commands, history, tests. 2014-12-11 22:03:32 -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
pty.go Set term width properly. 2014-12-09 19:26:55 -08:00
server.go Merge branch 'master' into name-autocomplete 2014-12-17 21:30:39 -02: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