Add README.md
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user