106 lines
2.1 KiB
Markdown
106 lines
2.1 KiB
Markdown
# sshell
|
||
|
||
A personal SSH and shell connection manager with a terminal user interface (TUI), built in Rust.
|
||
|
||
## Features
|
||
|
||
- **Connection management** — SSH and local shell profiles with tagging, usage tracking, and smart sorting
|
||
- **Credential storage** — Passwords and SSH private keys stored securely in config
|
||
- **Import from `~/.ssh/config`** — One command to import all existing hosts
|
||
- **Local shell scan** — Auto-detects available shells from `/etc/shells`
|
||
- **Quick select** — Press `Ctrl+Q` then a number key (1–9) to connect instantly
|
||
- **Encrypted cloud sync** — Push/pull config via GitHub Gist, WebDAV, or S3 with AES-256-GCM encryption
|
||
- **CLI subcommands** — Connect, import, sync, and diagnostics without launching the TUI
|
||
|
||
## Installation
|
||
|
||
```bash
|
||
cargo build --release
|
||
```
|
||
|
||
The binary will be at `target/release/sshell`.
|
||
|
||
### Runtime requirements
|
||
|
||
- `ssh` — for SSH connections
|
||
- `sshpass` — for password-based SSH authentication
|
||
|
||
## Usage
|
||
|
||
```bash
|
||
# Launch the TUI
|
||
sshell
|
||
|
||
# Connect directly by name
|
||
sshell connect myserver
|
||
|
||
# Import hosts from ~/.ssh/config
|
||
sshell import
|
||
|
||
# Sync
|
||
sshell sync push
|
||
sshell sync pull --strategy merge
|
||
|
||
# Diagnostics
|
||
sshell doctor
|
||
sshell doctor myserver
|
||
|
||
# Print config file path
|
||
sshell config-path
|
||
```
|
||
|
||
## Configuration
|
||
|
||
Config is stored at `~/.config/sshell/config.toml` (auto-created on first run).
|
||
|
||
```toml
|
||
version = 2
|
||
|
||
[settings]
|
||
backend = "gist"
|
||
gist_id = "..."
|
||
sync_password = "..."
|
||
|
||
[connections.myserver]
|
||
type = "ssh"
|
||
host = "example.com"
|
||
port = 22
|
||
user = "admin"
|
||
auth_ref = "myserver-password"
|
||
tags = ["production"]
|
||
|
||
[credentials.myserver-password]
|
||
type = "password"
|
||
value = "secret123"
|
||
```
|
||
|
||
## TUI Keybindings
|
||
|
||
| Key | Action |
|
||
|---|---|
|
||
| `j` / `k` / Arrow keys | Navigate connections |
|
||
| `Enter` | Connect |
|
||
| `e` | Edit connection |
|
||
| `n` | New connection |
|
||
| `d` | Delete connection |
|
||
| `/` | Search |
|
||
| `Ctrl+Q` | Quick select mode |
|
||
| `2` | Credential list |
|
||
| `s` | Settings |
|
||
| `i` | Import from SSH config |
|
||
| `q` / `Esc` | Back / Quit |
|
||
|
||
## Development
|
||
|
||
```bash
|
||
# Run tests
|
||
cargo test
|
||
|
||
# Run with debug output
|
||
cargo run
|
||
```
|
||
|
||
## License
|
||
|
||
MIT
|