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. The default view is the tree, grouped by each host's primary group. Tab switches to a flat alphabetical list.
┌── hosts (tree) ──────────────────┐┌── details ───────────────────────────────┐ │ 🟢 ▼ fleet (365) ││ web-eu-01 │ │ 🟢 bastion-eu [jumphost] ││ │ │ 🟢 web-eu-01 ││ host: web-eu-01 │ │ 🟢 web-eu-02 ││ port: 12344 │ │ 🟢 ▶ home (8) ││ user: gn │ │ ⚫ ▶ (ungrouped) (0) ││ key: ~/.ssh/id_ed25519 │ │ ││ groups: fleet │ │ ││ tags: fleet │ │ ││ auto_duo_push: true │ │ ││ proxy_command: ssh bastion-eu -W %h:%p │ │ ││ last connect: 2026-05-19T13:24:18Z │ └──────────────────────────────────┘└──────────────────────────────────────────┘ tree · sort name · 373 hosts Enter/s/f/p/c shell/sftp/files/fwd/snippet x exec w watch P playbook Space mark Tab tree S sort a/e/d host A/R/D group / filter ? 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/pawel-cygal/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.