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.
- vim keys: jkhl, ctrl+d/u, g/G
- emacs keys: ctrl+p/n/b/f
- ctrl+rrun commands without spawning a TTY
- ctrl+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
<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
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/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://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/ssmrequires 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 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 
