sshelf
sshelf
A small terminal UI to manage SSH connections. Add servers once, then connect with a couple of keystrokes — no need to remember hostnames, users, or key paths.
Install
Homebrew (tap from GitVerse):
From source (need Go):
Version:
Quick start
Run with no arguments to open the interactive list:
- ↑ / ↓ or j / k — move
- Enter — connect to the selected server
- n — add a new connection
- e — edit the selected connection
- d — delete the selected connection (with confirmation)
- / — search/filter by name, host, user, shortcut, or description
- q or Ctrl+C — quit
In the add/edit form: Tab or Enter = next field, Shift+Tab = previous field, Esc = cancel.
If you set a shortcut when creating or editing a connection, you can connect without opening the UI:
Where the config file lives
All connections are stored in a single JSON file. The program creates the directory the first time you save a connection (e.g. after adding one with n).
| OS | Path |
|---|---|
| macOS / Linux | |
| Windows | |
You can edit this file by hand, back it up, or put it in Dropbox/iCloud/git and symlink it into the path above.
Config file format
The file has a and a array. Each connection can have:
| Field | Required | Description |
|---|---|---|
| auto | Set automatically when you add from the UI; include when editing by hand. |
| yes | Display name in the list. |
| yes | Hostname or IP. |
| yes | SSH username. |
| no | SSH port (default 22). |
| no | Path to private key (e.g. ). |
| no | SSH password (fed automatically when ssh prompts; no external tools). |
| no | Alias for (e.g. , ). |
| no | Optional note. |
Example:
Sync between machines
The config is one file. To use the same connections on several computers:
- Copy
(or sync the whole~/.config/sshelf/connections.jsonfolder) via your usual backup/sync (git, Dropbox, iCloud, etc.), or~/.config/sshelf - Create a symlink from
to the file inside your synced folder.~/.config/sshelf/connections.json
Requirements
- To run: SSH in your PATH (the tool runs
under the hood).ssh - To build: Go 1.21+.
License
MIT