Secure Shell Manager
Streamline SSH connections with a simple Terminal UI
Scratching my own itch: ssm is an SSH connection manager designed to connect, filter, tag, and much more from a simple terminal interface. Works on top of installed command-line programs and does not require any setup on remote systems.
tl;dr - Install
See HELP for CLI flags.
See CHANGELOG for dev info.
Features
- vim keys: jkhl, ctrl+d/u, g/G
- emacs keys: ctrl+p/n/b/f
ctrl+rrun commands without spawning a TTYctrl+eedit the loaded config- config will automatically reload on change
ctrl+vshow config next to servers- filter through all your servers: /
- switch between SSH and MOSH with TAB
- CLI short-flags support e.g.
ssm -seoenables--show,--exit, and--order - group servers using tags e.g.
#tag: admin - show only admin tagged servers
ssm admin - use
#tagorderkey to prioritize tagged hosts in list-view - use
--themeto change color scheme - edit themes.go to add more
Keys
<enter↵> connect to selected host
<ctrl+e> edit ssh config
<ctrl+v> show all config params in sideview
<ctrl+r> run commands on host w/o starting a tty
<tab> switch between SSH/MOSH
< / > filter hosts
<q or esc> quit
# under development (coming soon)
ctrl+s sftp upload/download files to/from server
ctrl+g port-forwarding UI
space␣ select multiple hosts to interact with
Quickstart
If you're not accustomed to ssh config start here otherwise skip to Install
# backup any existing config [ -f ~/.ssh/config ] && cp ~/.ssh/config ~/.ssh/config.bak # create ssh config cat <<EOF >>~/.ssh/config # This is an example config for SSH #tagorder is a key used to prioritize #tag: hosts in list-view Host hostname1 #tag: tagValue1,tagValue2,tagValueN User user HostName hello.world Port 2222 IdentityFile ~/.ssh/id_rsa Host segfault.net #tag: research User root HostName segfault.net Host terminalcoffee #tag: shops User adam HostName terminal.shop EOF # file must have 600 perms for security chmod 600 ~/.ssh/config
Install
Download ssm binary from releases
available for [Linux, MacOS, FreeBSD, NetBSD, OpenBSD, Solaris]
on [x86_64, i386, arm64, arm] architectures, need more? just ask
# verify the binary is signed with my key
gpg --verify ssm_sig ssm# bash script install for linux|macos|freebsd|netbsd|openbsd|solaris curl -sSL https://github.com/lfaoro/ssm/raw/main/scripts/get.sh | bash wget -qO- https://github.com/lfaoro/ssm/raw/main/scripts/get.sh | bash # we don't pay Apple for a signing key, therefore you might need to run xattr -d com.apple.quarantine ssm # on MacOS # brew tap for macos/linux brew install lfaoro/tap/ssm
Build
requires Go
# bootstrap go install github.com/lfaoro/ssm@latest # build git clone https://github.com/lfaoro/ssm.git \ && cd ssm \ && make \ && bin/ssm # build from sr.ht mirror git clone https://git.sr.ht/~faoro/ssm \ && cd ssm \ && make \ && bin/ssm make clean # clean everything even caches make distclean
Help
Contributors
Pull requests are very welcome and will be merged.
Report a bug or request a new feature, feel free to open a new issue.
Show support
If
ssmis useful to you, please consider giving it a ⭐.
-
star the repo
-
tell your friends
