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/configfile 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
prodinstantly 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/configand contains validHostdirectives (excludingHost *wildcards). Ensure file permissions are set correctly to600(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:
sshsdelegates the actual connection to your standardsshbinary. If authentication fails, test connecting directly with verbose logging:ssh -v prod-web-01to diagnose key or network issues.