- Added new rank: Administators (or masters). This rank can add or delete operators, but cannot add or remove another administrators. Administrators rank is designed by public key on server startup. - Added "vim mode". With this mode you can use commands as ':' instead of '/'. As you can see in the code, the Prefix parameter of Command structure was changed by a neutral parameter for future introductions of prefixes. - New Help function. This function add help for admin rank. - Added the following commands: - setnick: Administrators can change the nick of another user. - private: Users can stablish privates conversations. This conversations are permanent until they execute endprivate command. - endprivate: Finish private conversation. - welcome: Prints motd. Only admins can execute this. - whois: In whois only admins can see ip. - delop: Allow admins to delete an operator (or moderator as is mentioned in some parts of the code). - Changed historyLen and roomBuffer vars. - In cmd tool have been added fsnotify to update public key files (admin and moderator public key files). This is to prevent to restart the server everytime we want to add an administrator. - Added new prompt mode. In this mode you can see in which room you are talking. As default is 'general'. If you start private conversation the room will be the name of the another user. This part has been introduced for future implementations. - As I said before now exists private conversations (unlike msg command).
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 MD5:e5:d5:d1:75:90:38:42:f6:c7:03:d7:d0:56:7d:6a:db
or SHA256:HQDLlZsXL3t0lV5CHM0OXeZ5O6PcfHuzkS8cRbbTLBI
. If you see something different, you might be MITM'd.
(Apologies if the server is down, try again shortly.)
Downloading a release
Recent releases include builds for MacOS (darwin/amd64) and Linux (386, amd64, and ARM6 for your RaspberryPi).
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.8 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.
--version Print version and exit.
-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)
--log= Write chat log to this file.
--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).
Frequently Asked Questions
The FAQs can be found on the project's Wiki page. Feel free to submit more questions to be answered and added to the page.
License
This project is licensed under the MIT open source license.