Files

106 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 or WebDAV 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