A lightweight terminal TUI for managing SSH, serial, telnet, SFTP, FTP, WebDAV and S3 connections in one binary.
Gu1llaum-3/sshm
A terminal TUI for browsing, connecting to, and managing SSH hosts defined in your ~/.ssh/config file.
- Stars
- 1,413
- Forks
- 79
- Open issues
- 25
- Last commit
- 16 days ago
What is it?
SSHM is a command-line SSH manager written in Go. It reads and edits your existing ~/.ssh/config file, presenting hosts in an interactive terminal list where you can search by name, hostname or tag, and connect with a single keypress. You can also connect directly from the shell with sshm <host>, or run a remote command the same way.
Beyond connecting, SSHM handles host maintenance: adding, editing and deleting entries through guided forms, moving hosts between Include'd config files, and checking which hosts are reachable over SSH with color-coded status indicators. Port forwarding (local, remote and dynamic SOCKS) can be configured from the interface, and recently used forwarding setups are saved for reuse. Connection history is recorded so the list can be sorted by last login.
SSHM works directly with standard OpenSSH configuration, supports Include directives and custom config files via -c, and creates backups before modifying files. It ships as a single binary for Linux, macOS and Windows.
Key features
- 01Interactive TUI for searching, browsing and connecting to SSH hosts
- 02Direct connection and remote command execution from the shell with sshm <host>
- 03Local, remote and dynamic (SOCKS) port forwarding with saved history
- 04Add, edit, move and delete host entries while keeping ~/.ssh/config intact
- 05Background SSH connectivity checks with status indicators
- 06Automatic backups before configuration changes
Use cases
- Managing a large number of servers spread across multiple SSH config Include files
- Quickly opening database tunnels or SOCKS proxies to reach internal services
- Checking which servers are currently reachable before running maintenance
- Running one-off commands on production hosts from scripts or the shell
Quick start
- 1
Install via Homebrew (macOS)
brew install Gu1llaum-3/sshm/sshm - 2
Or install with the one-line Unix/Linux/macOS script
Install with the official instructions in the README - 3
Launch the interactive TUI
sshm
Things to know
- Requires a ~/.ssh/config file, so it only manages hosts already defined there or added through it.
- Move-to-file features need SSH Include directives set up in your config.
Topics
FAQ
- What is sshm?
- A terminal TUI for browsing, connecting to, and managing SSH hosts defined in your ~/.ssh/config file. SSHM is a command-line SSH manager written in Go. It reads and edits your existing ~/.ssh/config file, presenting hosts in an interactive terminal list where you can search by name, hostname or tag, and connect with a single keypress. You can also connect directly from the shell with sshm <host>, or run a remote command the same way.
- Is sshm free to use? What license does it have?
- sshm is open source under the MIT license. Check the license terms before using it in commercial products.
- Is sshm still maintained?
- Actively maintained. The last commit to sshm was on Oct 4, 2026.
- What can I use sshm for?
- Managing a large number of servers spread across multiple SSH config Include files Quickly opening database tunnels or SOCKS proxies to reach internal services Checking which servers are currently reachable before running maintenance Running one-off commands on production hosts from scripts or the shell
- How do I install sshm?
- Install via Homebrew (macOS): brew install Gu1llaum-3/sshm/sshm Or install with the one-line Unix/Linux/macOS script Launch the interactive TUI: sshm
- Where can I get sshm?
- The source code and installation instructions are on GitHub: https://github.com/Gu1llaum-3/sshm
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A Textual-based terminal dashboard for creating, editing, pausing and monitoring cron jobs on local machines and remote servers over SSH.
A terminal markdown reader and renderer that displays .md files and repos with styled formatting in the CLI.
A terminal UI for rsync that manages reusable transfer profiles, previews changes as a dry-run diff, and shows live progress, including over SSH.
A keyboard-driven terminal download manager in Go that splits files into parallel chunks and can download from multiple mirrors.
A terminal screensaver written in Go that starts when your shell is idle, showing animated scenes like constellations, rain, and particles.