Add README.md

This commit is contained in:
2026-05-26 20:17:54 +08:00
parent 35470fc277
commit a74eacfebd
+105
View File
@@ -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 (19) 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