SysTeam.pl / Products / sshmgr
sshmgrmodern SSH manager
Modern SSH connection manager for the terminal. Full CLI + TUI in a single Go binary. Jump hosts, OS-keyring login chains, port forwarding, parallel exec across host fleets, and native Ansible integration.
Launch with sshmgr ui. Tab switches between a tree grouped by each host's primary group and the flat table shown here: alias, host, tags and last use, each in its own colour, plus reachability history for the selected host.
sshmgr v0.1.0 by SysTeam · ~/.config/sshmgr/config.yaml · catppuccin · 373 hosts ╭─ hosts (flat) ───────────────────────────╮╭─ web-eu-01 ────────────────────────╮ │ ALIAS HOST TAGS LAST ││ ● online · native · 2 fwd │ │▍● web-eu-01 web-eu-01 fleet 2h ││ ────────────────────────────────── │ │ ● web-eu-02 web-eu-02 fleet 5h ││ AVAILABILITY │ │ ● bastion-eu bastion-eu jump 1h ││ ██████████ 100% 10 rounds │ │ ○ db-eu-01 db-eu-01 db 3d ││ ────────────────────────────────── │ │ ◌ web-us-01 web-us-01 fleet — ││ CONNECTION │ │ ● cache-eu-01 cache-eu-01 cache 9h ││ gn@web-eu-01:12344 │ │ ││ ~/.ssh/id_ed25519 │ │ ││ jump bastion-eu │ │ ││ ────────────────────────────────── │ │ ││ MEMBERSHIP │ │ ││ fleet #fleet #eu │ ╰──────────────────────────────────────────╯╰────────────────────────────────────╯ flat · sort name · 373 hosts Enter shell s sftp f files p fwd x exec m anim ? help q quit
Built for teams that manage dozens or hundreds of SSH hosts through jumphost bastions, Duo MFA, and multi-step sudo
Full terminal UI with host tree, live status indicators, and connection menus — plus a scriptable CLI for pipelines. Single Go binary, no daemons.
Multi-step SSH login (su, sudo, jumphost) with passwords from OS keyring (Secret Service, macOS Keychain), env vars, custom commands, or interactive prompts.
-L / -R / -D SOCKS5 + X11 + agent forwarding. Built-in SCP / SFTP / 2-pane file manager sharing the same connect chain (proxy_jump, bastions, all auth backends).
sshmgr exec --group fleet 'uptime' — N hosts in parallel with bounded concurrency, prefixed output, pass/fail summary, retries, --diff, --json.
export ansible turns the fleet into an inventory (resolving bastion chains and proxy hops for you). playbook subcommand runs ansible-playbook against any selector.
Catches broken proxy_jump refs, missing key files, snippet collisions, and undefined groups before you ever hit them at connect time.
Saved one-liners picked from a TUI menu or run from the CLI: sshmgr alias :name. Inherited from groups, shareable from reusable file libraries.
Optional tee of the remote shell to a per-session log file for audit, replay, and post-mortem troubleshooting. No black boxes.
Default (aqua), hacker (matrix green), cyberpunk (neon). Live host status (UP / DOWN / DEGRADED) visible in the TUI without a manual refresh.
Linux or macOS, Go 1.26+. Windows works in theory but isn't tested.
$ git clone https://github.com/systeampl/sshmgr.git $ cd sshmgr $ go build -o sshmgr . $ sudo install -m 0755 sshmgr /usr/local/bin/sshmgr $ sshmgr ui # launch the TUI $ sshmgr <alias> # connect to a host (CLI default) $ sshmgr --help # list all CLI commands
MIT-licensed open source. No user accounts, no telemetry, no daemons. Clone, build, use. Issues and pull requests welcome.