ssh-chat – Make Group/Private Chat with Other Linux Users Over SSH

ssh-chat is a cross-platform command line utility written in GoLang, which enables you to chat securely with a relatively small number of users over an ssh connection. It is specially designed to convert your SSH server into chat service. Once you launch it, you’ll get a chat prompt rather than a usual shell.

ssh-chat Features

  1. Enables users to chat in a room via ssh.
  2. Supports for private messaging between users.
  3. Supports for color theme customization if supported by your ssh client.
  4. It can examine any user’s public key fingerprint for identification reasons.
  5. Enables users to set a nickname.
  6. Support for whitelisting/blocking users as well as kicking users.
  7. Supports for listing of all connected users.

In this article, we will explain how to easily setup and use ssh-chat on Linux system to chat with other users on same server.

Requirements:

As I said, ssh-chat is written in GoLang, so if you don’t have GoLang installed on your system, follow this guide to install it.

  1. How to Install GoLang (Go Programming Language) in Linux

Installing ssh-chat in Linux Systems

Start by downloading the latest version of ssh-chat from its release page and extract the tar file and move into the package directory to run it as shown.

# cd Downloads
# wget -c https://github.com/shazow/ssh-chat/releases/download/v1.6/ssh-chat-linux_amd64.tgz
# tar -xvf ssh-chat-linux_amd64.tgz
# cd ssh-chat/
# ./ssh-chat
SSH Chat Server

SSH Chat Server

Now your team members can connect to it using the ssh command, and start chatting in a straightforward chat room via a secure shell connection.

To demonstrate how it all works, we will use a ssh-chat server with IP: 192.168.56.10 and three users (root, tecmint and aaronkilik) connected over ssh to this the server as shown below.

Important: You’ll notice that all the three users are not entering any passwords while connecting to the server, this is because we have setup passwordless login for ssh connections. This is the recommended method of authentication for ssh connections in Linux.

$ ssh [email protected]
$ ssh [email protected]
$ ssh [email protected]
SSH User Logins without Passwords

SSH User Logins without Passwords

While connected to the server over ssh, all the above system users can join the chat room using ssh command like this (they must use the port which the chat server is listening on):

$ ssh localhost -p 2022
SSH Chat Room

SSH Chat Room

To view all chat prompt commands, a user should type the /help command.

[tecmint] /help 
SSH Chat Help

SSH Chat Help

To send a private message, for instance; if user tecmint wants to send a secret message to aaronkilik, he/she would need to use the /msg command as follows.

[tecmint] /msg aaronkilik Am a hacker btw!
[aaronkilik] /msg tecmint Oh, that's cool

You’ll notice that root doesn’t view the above messages as shown below.

SSH Chat User Private Messages

SSH Chat User Private Messages

To view a users information, use the /whois command like this.

[aaronkilik]/whois tecmint

To view all connected users in the chat room, use the /names command as follows.

[tecmint] /names

There are several options to use with ssh-chat before starting the server. To set a message of the day file, use the --motd option like this.

$ ssh-chat --motd ~/motd_file  

To define a chat log file, use the --log option as below.

$ ssh-chat --motd ~/motd_file --log /var/log/ssh-chat.log         

You can optionally test with the developers server.

$ ssh chat.shazow.net

Finally, to view all server usage options, type:

$ssh-chat -h

Usage:
  ssh-chat [OPTIONS]

Application Options:
  -v, --verbose    Show verbose logging.
      --version    Print version and exit.
  -i, --identity=  Private key to identify server with. (default: ~/.ssh/id_rsa)
      --bind=      Host and port to listen on. (default: 0.0.0.0:2022)
      --admin=     File of public keys who are admins.
      --whitelist= Optional file of public keys who are allowed to connect.
      --motd=      Optional Message of the Day file.
      --log=       Write chat log to this file.
      --pprof=     Enable pprof http server for profiling.

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

ssh-chat Github Repository: https://github.com/shazow/ssh-chat

Don’t forget to check out:

  1. 5 Best Practices to Secure and Protect SSH Server
  2. Configure “No Password SSH Keys Authentication” with PuTTY on Linux Servers
  3. Protect SSH Logins with SSH & MOTD Banner Messages
  4. How to Block SSH and FTP Access to Specific IP and Network Range in Linux

ssh-chat is a really simple and easy-to-use secure chat service for Linux users. Do you have any thoughts to share? If yes, then use the feedback form below.

Best Affordable Linux and WordPress Services For Your Business
Outsource Your Linux and WordPress Project and Get it Promptly Completed Remotely and Delivered Online.

If You Appreciate What We Do Here On TecMint, You Should Consider:

  1. Stay Connected to: Twitter | Facebook | Google Plus
  2. Subscribe to our email updates: Sign Up Now
  3. Get your own self-hosted blog with a Free Domain at ($3.45/month).
  4. Become a Supporter - Make a contribution via PayPal
  5. Support us by purchasing our premium books in PDF format.
  6. Support us by taking our online Linux courses

We are thankful for your never ending support.

Aaron Kili

Aaron Kili is a Linux and F.O.S.S enthusiast, an upcoming Linux SysAdmin, web developer, and currently a content creator for TecMint who loves working with computers and strongly believes in sharing knowledge.

Your name can also be listed here. Got a tip? Submit it here to become an TecMint author.

RedHat RHCE and RHCSA Certification Book
Linux Foundation LFCS and LFCE Certification Preparation Guide

You may also like...

9 Responses

  1. ajay says:

    Hi Team,

    I am from cyber security team, i am working on security controls so from windows and Linux perspective i want to know which document or screenshot from these(Linux and Windows) will suffice for encryption and key management control for audit purpose.

  2. Nurul Episah Bt Eka says:

    Hi, i am a student and quite a beginner in C Linux programming. I just want to ask how to add login prompt for client before they can start chatting with each other?

  3. shazow says:

    Hey there, I’m the author of ssh-chat.

    Some corrections for your article:

    You don’t need to host a gateway for people to access ssh-chat. That is, you don’t need to ssh into one server, only to ssh into ssh-chat after that. You can just ssh into the ssh-chat server directly if the port is exposed. In fact, removing the need for a gateway to have ssh-secured chat is the entire point of ssh-chat.

    Also as others mentioned, you don’t need to compile it from scratch to run the server. You can download our binaries here: https://github.com/shazow/ssh-chat/releases

    More FAQ stuff here: https://github.com/shazow/ssh-chat/wiki/FAQ

    And as always, come say hi and ask questions on the main ssh-chat server:

    ssh chat.shazow.net

    Have fun!
    – shazow

    • Aaron Kili says:

      @shazow

      Thanks a lot for writing back: giving us some useful information. We only run ssh into the server because we got errors while trying to connect to ssh-chat server directly. But we’ll test once more and possibly update the article as you have explained. Once more thanks for this useful server, and these remarks.

  4. Tim says:

    Aaron,

    Why is it required to install golang? Are the instructions to download source code and then build with golang?

    Thanks!

    Tim

    • Aaron Kili says:

      @Tim

      You only need GoLang if your installing from source. Golang is statically compiled in the binary, just install and run it as mentioned by @Will below.

  5. Will says:

    Golang is statically compiled meaning you don’t need to install golang to run the binary files. Just download the executable and run.

Got something to say? Join the discussion.

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.