How to Install and Use sshs in Linux for an Interactive Terminal SSH Host Manager

As system administrators, DevOps engineers, and cloud architects manage growing fleets of virtual machines, edge servers, and cloud instances, the standard ~/.ssh/config file can easily swell to dozens or hundreds of host blocks. Remembering arbitrary host aliases, IP addresses, usernames, and custom SSH port numbers quickly becomes impractical. While shell tab-completion helps, it lacks visual context and metadata inspection. To streamline your daily terminal workflow, sshs (SSH Search) provides a lightning-fast, terminal-based user interface (TUI) written in Go that parses your existing SSH configuration and provides real-time fuzzy searching and instant one-key connections.

Key Features of sshs for Remote Infrastructure Management

Understanding why sshs outperforms manual terminal typing highlights its utility:

  • Zero Re-configuration: Directly parses your existing ~/.ssh/config file without creating proprietary databases or duplicate connection registries.
  • Real-Time Fuzzy Searching: Filters hosts instantly by hostname, IP address, user alias, port, or custom tags as you type.
  • Connection Details Preview: Displays the complete SSH configuration block for the selected host in a clear side panel before establishing the session.
  • Includes and Wildcard Support: Fully respects modern OpenSSH directives including Include, ProxyJump, IdentityFile, and custom environment variables.
  • Lightweight Single Binary: Compiles to a self-contained binary with no runtime dependencies.

Step 1: Install sshs on Linux

You can install sshs via precompiled GitHub binaries, Go package manager, or community repositories:

Method A: Installing via Precompiled Binary (Recommended)

Download the latest release tarball from GitHub and place it in your system PATH:

curl -s https://api.github.com/repos/quantumsheep/sshs/releases/latest \
| grep "browser_download_url.*linux_amd64.tar.gz" \
| cut -d : -f 2,3 \
| tr -d \" \
| wget -qi -

tar -xzf sshs-linux-amd64.tar.gz
sudo mv sshs /usr/local/bin/
rm sshs-linux-amd64.tar.gz

Method B: Installing via Go

If you have Go installed on your workstation:

go install github.com/quantumsheep/sshs@latest

Method C: Installing on Arch Linux

Arch users can install sshs directly from the AUR using an AUR helper:

yay -S sshs-bin

Verifying the Installation

sshs --version

Confirm that the binary executes and displays the active version build.

Step 2: Structuring Your SSH Configuration for Optimal Searching

Because sshs extracts host data from your OpenSSH configuration, organizing your ~/.ssh/config file ensures maximum searchability. You can add informative comments or use descriptive naming conventions:

nano ~/.ssh/config

Consider structuring entries with environment tags or location prefixes:

Host prod-web-01
    HostName 192.168.10.50
    User ubuntu
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Host staging-db-01
    HostName 10.0.5.12
    User postgres
    ProxyJump bastion.internal.company.com
    IdentityFile ~/.ssh/id_rsa

Host aws-k8s-master
    HostName ec2-203-0-113-25.compute-1.amazonaws.com
    User admin
    IdentityFile ~/.ssh/aws_prod.pem

Step 3: Launching and Navigating sshs

Launch the interactive interface by simply running:

sshs

Once the TUI appears on your screen:

  • Fuzzy Search Bar (Top): Start typing any part of a host name, user, or IP address. For instance, typing prod instantly filters down to production servers.
  • Up / Down Arrow Keys (or Ctrl+N / Ctrl+P): Navigate through the list of matching host entries.
  • Detail Panel (Right): Inspect the resolved IP address, port, identity keys, and jump proxies associated with the highlighted host.
  • Enter Key: Immediately launches the standard OpenSSH client and connects to the selected server.
  • Escape or Ctrl+C: Exits the TUI without executing a connection.

Step 4: Using Custom Config Files and Command-Line Flags

If you maintain separate configuration files for client accounts, isolated clouds, or enterprise VPNs, pass the path directly to sshs:

sshs -c ~/.ssh/client_project_config

To view hidden default entries or configure custom keybindings, inspect available startup flags:

sshs --help

Step 5: Creating a Shell Alias for Instant Access

To make remote server navigation second nature, create a memorable shortcut in your shell configuration (e.g., ~/.bashrc or ~/.zshrc):

echo "alias s='sshs'" >> ~/.bashrc
source ~/.bashrc

Now, typing s in your terminal instantly opens your complete infrastructure catalogue for one-key access.

Troubleshooting Common sshs Issues

  • Host List Appears Empty: Verify that your configuration file is located at ~/.ssh/config and contains valid Host directives (excluding Host * wildcards). Ensure file permissions are set correctly to 600 (chmod 600 ~/.ssh/config).
  • Include Directives Ignored: If you split your configuration across multiple files using Include conf.d/*, ensure the referenced path exists and is readable by your current user account.
  • Session Drops Immediately Upon Connection: sshs delegates the actual connection to your standard ssh binary. If authentication fails, test connecting directly with verbose logging: ssh -v prod-web-01 to diagnose key or network issues.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.