Chat over SSH.
Go to file
Andrey Petrov 5c72b1a121 Merge branch 'refactor' 2015-01-20 14:27:24 -08:00
chat Sanitize names on join and /nick. 2015-01-20 14:13:59 -08:00
sshd History backfill, also tests pass. 2015-01-18 18:55:47 -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 Merge branch 'refactor' 2015-01-20 14:27:24 -08:00
README.md Merge branch 'refactor' 2015-01-20 14:27:24 -08:00
auth.go /ban and /op now support durations, also all other auth things in the api. 2015-01-19 19:16:37 -08:00
auth_test.go /ban and /op now support durations, also all other auth things in the api. 2015-01-19 19:16:37 -08:00
cmd.go /ban and /op now support durations, also all other auth things in the api. 2015-01-19 19:16:37 -08:00
host.go /version, /uptime 2015-01-20 14:23:37 -08:00
host_test.go /ban and /op now support durations, also all other auth things in the api. 2015-01-19 19:16:37 -08:00
identity.go Sanitize names on join and /nick. 2015-01-20 14:13:59 -08:00
key.go Use authorized_keys-style public keys rather than fingerprints. 2015-01-10 12:44:06 -08:00
logger.go /ban and /op now support durations, also all other auth things in the api. 2015-01-19 19:16:37 -08:00
motd.txt Fix motd, invalid fingerprint, no auth whitelist. 2014-12-16 20:15:37 -08:00
set.go /ban and /op now support durations, also all other auth things in the api. 2015-01-19 19:16:37 -08:00
set_test.go /ban and /op now support durations, also all other auth things in the api. 2015-01-19 19:16:37 -08:00

README.md

Build Status Bountysource

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.)

Compiling / Developing

You can compile ssh-chat by using make build. The resulting binary is portable and can be run on any system with a similar OS and CPU arch. Go 1.3 or higher is required to compile.

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.

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:2022)
      --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 ":22" --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.

License

This project is licensed under the MIT open source license.