Add the README.md file
parent
31d13507fe
commit
6bbd9fb5f8
|
|
@ -0,0 +1,83 @@
|
||||||
|
# sshmngrs
|
||||||
|
|
||||||
|
A fast and simple SSH connection manager in a terminal UI, built in Rust and
|
||||||
|
[ratatui](https://ratatui.rs).
|
||||||
|
|
||||||
|
## 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`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run from source
|
||||||
|
cargo run --release
|
||||||
|
|
||||||
|
# Or install the binary
|
||||||
|
cargo install --path .
|
||||||
|
|
||||||
|
# Or from crates.io
|
||||||
|
cargo install sshmngrs
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Launch the app:
|
||||||
|
|
||||||
|
```Bash
|
||||||
|
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:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[[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 `ssh` flags
|
||||||
|
- Custom `ssh` paths
|
||||||
|
- `scp`
|
||||||
|
- Jump shosts
|
||||||
|
- Aliases from your `~/.ssh/config`
|
||||||
|
- Etc...
|
||||||
|
|
||||||
|
## Importing from sshch
|
||||||
|
|
||||||
|
If you come from [sshch](https://gitlab.com/zlax/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.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
```
|
||||||
Loading…
Reference in New Issue