sshelf
A fast terminal UI for managing and connecting to SSH hosts. Save each node once, then fuzzy-search and connect in two keystrokes.
sshelf keeps its own host database and generates the correct ssh command for you. It
never reads or edits ~/.ssh/config (except an explicit, read-only import). No account, no
cloud, no telemetry: your hosts live in a human-readable TOML file on your disk, secrets live
in your OS keyring, and the only network activity is the ssh it hands your terminal to.
Get started
brew install max-rh/tap/sshelf # macOS or Linux
sshelf # launch the TUI
- Install: Homebrew, shell installer,
.deb,.rpm, Gentoo, or cargo. - Quickstart: the first five minutes, adding or importing hosts, connecting.
- FAQ & troubleshooting: common questions, quick answers.
sshelf doctor: when something isn’t working, run this first.
What’s in the box
- An atuin-style fuzzy launcher with frecency ordering. Searching & connecting
- A dual-pane SFTP file browser (
Ctrl-t): mark several, send in one go,F7to create a directory. Transferring files - tmux mode, where
Enteropens each host in a new window or pane and keeps the picker up. Connecting inside tmux - Background port forwards that survive quitting (
Ctrl-f/F4). Port forwarding - Sites with a shared bastion and defaults, plus free-form tags (
F3). Sites & tags - Stored passwords and passphrases auto-supplied at connect, and 2FA code prompts. Passwords, keys & 2FA
- SSH-config export: one
Includeline and plainssh/scp, rsync, and VS Code Remote see your hosts. Exporting to SSH config - Import from
~/.ssh/configor your whole Tailscale tailnet (--tailscale). Importing hosts - A scriptable CLI (
sshelf add,list --json,print-command, …). CLI reference sshelf doctor, one command that checks your setup and names the fix. Checking your setup
Platforms: macOS + Linux, x86_64 and arm64. Runtime: OpenSSH 8.4+ for password auto-supply.
How it’s built
Deciding whether to trust it, or just curious how the pieces fit?
- Security & threat model: exactly what stored secrets are protected against, and what they are not.
- How the ssh command is built: argv generation and the
SSH_ASKPASSmechanism that supplies passwords withoutsshpass. - Privacy: what sshelf reads, writes, runs, and sends, in plain terms. Nothing leaves your machine.
Contributing
Questions, ideas, and feature requests belong in GitHub Discussions.
Start with CONTRIBUTING.md,
then the Development section in the sidebar: architecture, module map, data model, and the
decision log. Docs follow the docs-in-sync rule: every behavior change updates the relevant
page here in the same change, with a dated entry in the progress log.