Files
lazyssh/README.md
T

123 lines
3.6 KiB
Markdown
Raw Normal View History

2025-08-26 21:33:02 +01:00
<div align="center">
<img src="./docs/logo.png" alt="lazyssh logo" width="600" height="600"/>
</div>
2025-08-13 10:39:40 +01:00
---
2025-08-26 21:33:02 +01:00
Lazyssh is a terminal-based, interactive SSH manager inspired by tools like lazydocker and k9s — but built for managing your fleet of servers directly from your terminal.
<br/>
With lazyssh, you can quickly navigate, connect, manage, and transfer files between your local machine and any server defined in your ~/.ssh/config. No more remembering IP addresses or running long scp commands — just a clean, keyboard-driven UI.
2025-08-13 10:39:40 +01:00
## ✨ Features
2025-08-26 21:33:02 +01:00
### Server Management (current)
- 📜 Read & display servers from your `~/.ssh/config` in a scrollable list.
- Add a new server from the UI by specifying alias, host/IP, username, port, identity file.
- ✏ Edit existing server entries directly from the UI.
- 🗑 Delete server entries safely.
- 📌 Pin / unpin servers to keep favorites at the top.
- 🏓 Ping server to check status.
2025-08-14 11:51:07 +01:00
2025-08-26 21:33:02 +01:00
### Quick Server Navigation
- 🔍 Fuzzy search by alias, IP, or tags.
- 🖥 Onekeypress SSH into the selected server (Enter).
- 🏷 Tag servers (e.g., prod, dev, test) for quick filtering.
- ↕️ Sort by alias or last SSH (toggle + reverse).
2025-08-13 10:39:40 +01:00
2025-08-14 11:51:07 +01:00
2025-08-26 21:33:02 +01:00
### Upcoming
- 📁 Copy files between local and servers with an easy picker UI.
- 📡 Port forwarding (local↔remote) from the UI.
- 🔑 Enhanced Key Management:
- Use default local public key (~/.ssh/id_ed25519.pub or ~/.ssh/id_rsa.pub)
- Paste custom public keys manually
- Generate new keypairs and deploy them
- Automatically append keys to ~/.ssh/authorized_keys with correct permissions
2025-08-13 10:39:40 +01:00
---
2025-08-26 21:33:02 +01:00
## 🛠 Installation
2025-08-13 10:39:40 +01:00
2025-08-26 21:33:02 +01:00
- From source (requires Go 1.22+):
- git clone https://github.com/Adembc/lazyssh.git
- cd lazyssh
- go build -o lazyssh ./cmd
2025-08-14 11:51:07 +01:00
- ./lazyssh --version
2025-08-26 21:33:02 +01:00
- Using make (if available):
- make build
- ./bin/lazyssh
Binary releases: if/when releases are published, download from the Releases page and place in your PATH.
2025-08-14 11:51:07 +01:00
---
2025-08-26 21:33:02 +01:00
## ⚙️ Configuration
lazyssh reads your SSH hosts from `~/.ssh/config`. Example entry:
```Host my-server
HostName 203.0.113.10
User ubuntu
Port 22
IdentityFile ~/.ssh/id_ed25519
```
You can add/edit/delete entries from within the UI as well; lazyssh will keep things consistent.
---
## ⌨️ Key Bindings
| Key | Action |
|---|---|
| / | Toggle search bar |
| ↑/↓ | Navigate servers |
| Enter | SSH into selected server |
| c | Copy SSH command to clipboard |
| g | Ping selected server |
| r | Refresh background data |
| a | Add server |
| e | Edit server |
| t | Edit tags |
| d | Delete server |
| p | Pin/Unpin server |
| s | Toggle sort field |
| S | Reverse sort order |
| q | Quit |
Tip: The hint bar at the top of the list shows the most useful shortcuts.
---
## 🚀 Quickstart
- Ensure your `~/.ssh/config` contains at least one Host.
- Run the app: `./lazyssh`
- Use `/` to search, `Enter` to connect.
---
## 🤝 Contributing
Contributions are welcome!
- Fork the repo and create a feature branch.
- Follow Go formatting and linting: `make fmt` and `make lint` if available.
- Keep PRs focused and include screenshots/GIFs for UI changes.
- Open issues for bugs/ideas; tag as bug/feature/enhancement.
By contributing, you agree that your contributions will be licensed under the Apache-2.0 License.
---
## 🧾 License
This project is licensed under the Apache License 2.0 — see the LICENSE file for details.
---
## 🙏 Acknowledgments
- Built with [tview](https://github.com/rivo/tview) and [tcell](https://github.com/gdamore/tcell).
- Inspired by [k9s](https://github.com/derailed/k9s) and [lazydocker](https://github.com/jesseduffield/lazydocker).