Manage your SSH connections with this open source tool

This open source project makes connecting to any SSH session quick and seamless, and downright relaxing.
98 readers like this.
Top 5 Linux pain points in 2017

Internet Archive Book Images. Modified by CC BY-SA 4.0

OpenSSH is widely used, but there isn't a well-known connection manager, so I developed the ncurses SSH connection manager (nccm) to fill that significant gap in the process. nccm is a simple SSH connection manager with an ultra-portable terminal interface (written in ncurses, as the project name suggests). And best of all, it's straightforward to use. With nccm, you can connect to an SSH session of your choice with minimum distraction and minimal keystrokes.

Install nccm

The quickest way to get going is to clone the project from its Git repository:

$ git clone nccm.git

In the nccm.git/nccm directory, there are two files—nccm itself and an nccm.yml configuration file.

First, copy the nccm script to /usr/local/bin/ and grant it executable permissions. You can do this in one step with the install command:

$ sudo install -m755 nccm
–target-directory /usr/local/bin

The nccm.yml file can be copied to any one of these locations, and is loaded from the first location found:

  • ~/.config/nccm/nccm.yml
  • ~/.nccm.yml
  • ~/nccm.yml
  • /etc/nccm.yml

The nccm command requires Python 3 to be installed on your machine, which shouldn't be a problem on most Linux boxes. Most Python library dependencies are already present as part of Python 3; however, there are some YAML dependencies and utilities you must install.

If you don't have pip installed, you can install it with your package manager. And while you're at it, install the yamllint application to help you validate the nccm.yml file.

On Debian or similar, use apt:

$ sudo apt install python3-pip yamllint

On Fedora or similar, use dnf:

$ sudo dnf install python3-pip yamllint

You also need PyYAML, which you can install with the pip command:

$ pip3 install --user PyYAML

Using nccm

Before starting, edit the nccm.yml file and add your SSH configuration. Formatting YAML is easy, and there are examples provided in the file. Just follow the structure—provide the connection name at the beginning of the line, with config items indented two spaces. Don't forget the colons—these are part of the YAML language.

Don't worry about ordering your SSH session blocks in any specific way, because nccm gives you "sort by" options within the program.

Once you've finished editing, check your work with yamllint:

$ yamllint ~/.config/nccm/nccm.yml

If no errors are returned, then you've formatted your file correctly, and it's safe to continue.

If nccm is accessible from your path and is executable, then typing nccm is all that's required to launch the TUI (terminal user interface). If you see Python 3 exceptions, check whether you have satisfied the dependencies. Any exceptions should mention any package that's missing.

As long as you're using the YAML config file without changing nccm_config_control mode, then you can use these keyboard controls:

  • Up/Down arrows - Move the marker the traditional way
  • Home/End - Jump marker to list first/last entry
  • PgUp/PgDn - Page up/down in the list
  • Left/Right arrows - Scroll the list horizontally
  • TAB - Moves the cursor between text boxes
  • Enter - Connect to the selected entry
  • Ctrl-h - Display this help menu
  • Ctrl-q or Ctrl-c - Quit the program
  • F1-F5 or !@#$% - Sort by respective column (1-5)

Use keys F1 through F5 to sort by columns 1 through 5. If your desktop captures F-key input, you can instead sort by pressing !@#$% in the "Conn" text box. The display shows 4 visible columms but we treat username and server address as separate columns for sorting purposes giving us 5 controls for sorting. You can reverse the order by pressing the same "sort" key a second time. A connection can be made by pressing Enter on the highlighted line.

nccm screenshot terminal view

Typing text into the "Filter" text box filters the output with an "and" function between everything entered. This is case-insensitive, and a blank space delimits entries. The same is true for the "Conn" text box, but pressing Enter here connects to that specific entry number.

There are a few more interesting features to discover, such as focus mode, but I'll leave it up to you to explore the details. See the project page or built-in help for more details.

The config YAML file is well-documented, so you'll know how to edit the settings to make nccm work best for you. The nccm program is highly commented, too, so you may wish to fork or mod it to add more features. Pull requests are welcome!

Relax into SSH with nccm

I hope this program serves you well and is as useful to you as it is to me. Thanks for being part of the open source community, and please accept nccm as my contribution to the ongoing efforts toward seamless, painless, and efficient computing experiences.

What to read next
User profile image.
Red Hat Certified Architect.


And what's the selling point? Why use a tool that needs a bunch of extra YAML code over just using the .ssh/config file?

The filtering.
When you have hundreds or thousands of ssh boxes to manage this makes life so much easier.
I too used the /etc/hosts file and ssh in the past, but as your number of connections rises as in the case of admins, this tool becomes useful.

In reply to by Daniel Ziltener (not verified)

I am definitely going to try this out. Thanks for your work on this!

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.