Chat over SSH.
Go to file
Andrey Petrov df37ad9a1e Add chat.shazow.net fingerprint to readme. 2014-12-14 14:25:01 -08:00
.gitignore Add .gitignore for easier local development 2014-12-13 13:18:58 -06:00
.travis.yml Only go v1.4, to save travis some resources. 2014-12-13 11:01:11 -08:00
Dockerfile upgrade to go 1.4, since travis.yml says so 2014-12-13 14:15:50 -08:00
LICENSE LICENSE, todo. 2014-12-12 17:52:05 -08:00
Makefile Adds Travis-CI testing 2014-12-13 10:53:14 -08:00
README.md Add chat.shazow.net fingerprint to readme. 2014-12-14 14:25:01 -08:00
client.go Merge pull request #39 from jazzychad/whitelist_cmd 2014-12-14 01:17:35 -08:00
cmd.go add ability to load motd from file - closes #25 2014-12-13 22:42:43 -08:00
colors.go Make highlights stand out 2014-12-13 17:42:43 -05:00
history.go Hacky fixes with notes. 2014-12-12 01:15:58 -08: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
pty.go Set term width properly. 2014-12-09 19:26:55 -08:00
server.go Fixed typo 2014-12-14 18:25:12 +01:00

README.md

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.
  -b, --bind=     Host and port to listen on. (0.0.0.0:22)
  -i, --identity= Private key to identify server with. (~/.ssh/id_rsa)

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

ssh-chat on 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

Or you can build your own image:

$ docker build -t (your-docker-username)/ssh-chat .

then run it:

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

Developing

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

TODO:

  • Welcome message.
  • set term width properly
  • client map rather than list
  • backfill chat history
  • tab completion
  • /ban
  • /ban by ip
  • /help
  • /about
  • /list
  • /nick
  • pubkey fingerprint
  • truncate usernames
  • rename collision bug
  • op ops on join
  • piped stdout bug
  • saner sanitizing of inputs (version string, allow space/period)
  • Some tests.
  • More tests.
  • Even more tests.
  • Lots of refactoring
  • Pull out the chat-related stuff into isolation from the ssh serving stuff

License

MIT