2.4 KiB
2.4 KiB
sshmngrs
A fast and simple SSH connection manager in a terminal UI, built in Rust and ratatui.
Features
- Terminal UI to browse your saved connections
- Each connection has an alias and the command to run (for example
ssh root@192.168.100.1) - Launch a connection: the TUI suspends, the command runs with full access to the terminal (password prompts, host-key confirmations, etc.), and the TUI is restored afterwards
- Vim-style navigation (
j/k) alongside the arrow keys - Connections are stored as TOML in a config file located in $HOME/.config/sshmngrs.conf
Installation
Requires a recent Rust toolchain and the ssh client available on your PATH.
# Run from source
cargo run --release
# Or install the binary
cargo install --path .
# Or from crates.io
cargo install sshmngrs
Usage
Launch the app:
sshmngrs
Keybindings
| Key | Action |
|---|---|
Enter |
Connect to the selected command |
a |
Add a new command |
e |
Edit the selected command |
d |
Delete the selected command |
↑ / k |
Move selection up |
↓ / j |
Move selection down |
q / Esc / Ctrl+C |
Quit |
Configuration
Connections are stored as TOML at ~/.config/sshmngrs.conf.
This is an example:
[[commands]]
alias = "kirbylife-lab (Podman)"
command = "ssh noroot@localhost:123"
[[commands]]
alias = "kirbylife-router"
command = "ssh root@192.168.100.1"
The command can be any shell command, so anything you would type in your shell works:
- Extra
sshflags - Custom
sshpaths scp- Jump shosts
- Aliases from your
~/.ssh/config - Etc...
Importing from sshch
If you come from sshch, the INI config at
~/.config/sshch.conf can be converted to the sshmngrs format with this
one-liner. Each exec_string becomes a command; groups and stored passwords are ignored.
awk 'function esc(s){gsub(/\\/,"\\\\",s);gsub(/"/,"\\\"",s);return s} /^\[/{gsub(/^\[|\]$/,"");a=$0;next} /^exec_string[ \t]*=/{sub(/^exec_string[ \t]*=[ \t]*/,"");printf "[[commands]]\nalias = \"%s\"\ncommand = \"%s\"\n\n",esc(a),esc($0)}' ~/.config/sshch.conf > ~/.config/sshmngrs.conf