Streamline SSH with a simple Terminal UI
SSM is an SSH connection manager designed to help engineers organize servers, connect, filter, tag, and much more from a simple terminal interface.
tl;dr - try it now
See CHANGELOG for more info.
See HELP for CLI flags.
- vim keys: jkhl, ctrl+d/u, g/G
- emacs keys: ctrl+p/n/b/f
- filter through all your servers
- simple connect and return flow
- switch between SSH and MOSH with a tab
ctrl+vshows all config params for selected hostctrl+eto edit the loaded config- config will automatically reload on change
- CLI short-flags support e.g.
ssm -seenables--exitand--show - group servers using tags e.g.
#tag: admin - show only admin tagged servers
ssm admin - use
#tagorderkey to prioritize tagged hosts in list-view
<enter↵> connect to selected host
<ctrl+v> show config for selected host
<ctrl+e> edit ssh configs
<tab> switch between SSH/MOSH
< / > filter hosts
<q or esc> quit
# under development (coming soon)
ctrl+r run commands on the server without starting a pty
ctrl+s sftp upload/download files to/from server
ctrl+g port-forwarding UI
space␣ select multiple hosts to interact with
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 terminalcoffee
#tag: shops
User adam
HostName terminal.shop
Host segfault.net
#tag: research
User root
HostName segfault.net
EOF
# file must have 600 perms for security
chmod 600 ~/.ssh/configDownload 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://raw.githubusercontent.com/lfaoro/ssm/refs/heads/main/scripts/get.sh | bash
wget -qO- https://raw.githubusercontent.com/lfaoro/ssm/refs/heads/main/scripts/get.sh | bash
# brew tap for macos/linux
brew install lfaoro/tap/ssmrequires Go
# bootstrap
go install github.com/lfaoro/ssm@latest
# build
git clone https://github.com/lfaoro/ssm.git \
&& cd ssm \
&& make \
&& bin/ssm
make clean
# clean everything even caches
make distcleanPull requests are very welcome and will be merged.
Report a bug or request a new feature, feel free to open a new issue.
If
ssmis useful to you, please consider giving it a ⭐.
-
star the repo
-
tell your friends