Never forget a server IP, username, or password again.
SSH Buddy saves all your server info (IP, username, port, tags, notes) and lets you connect with one command — or one click in the GUI.
Open PowerShell and run:
iwr https://raw.githubusercontent.com/Masumoou/ssh-buddy/main/install.ps1 -UseBasicParsing | iexcurl -sL https://raw.githubusercontent.com/Masumoou/ssh-buddy/main/install.sh | bashAfter installation, restart your terminal.
ssh user@192.168.1.1 # Automatically intercepted to show GUI if new
sshbuddy # Launch GUI from ANYWHERE| Requirement | Notes |
|---|---|
| Python 3.8+ | Built-in on most Linux; download from python.org for Windows |
keyring lib |
Installed via pip install -r requirements.txt |
sshpass |
Linux only for password auto-fill (sudo apt install sshpass) |
plink (optional) |
Windows for password auto-fill (install PuTTY) |
ssh-buddy add → add a new server (interactive)
ssh-buddy list → list all saved servers
ssh-buddy connect → pick from list → connect
ssh-buddy connect prod-web → connect by exact alias
ssh-buddy connect 207.31 → search by IP → connect
ssh-buddy connect ubuntu → search by username → connect
ssh-buddy connect "invoicing" → search by notes/tags → connect
ssh-buddy search oblak → search without connecting
ssh-buddy delete prod-web → delete a server
ssh-buddy export → export all servers to JSON
ssh-buddy import backup.json → import servers from JSON
ssh-buddy gui → launch GUI window
$ ssh-buddy connect web
Multiple matches:
ALIAS IP USERNAME PORT TAGS
─────────────────────────────────────────────────────────
prod-web 11.11.20.32 ubuntu 22 wcf
staging-web 11.22.33.55 ubuntu 22 staging
Pick number [1-2]: 1
→ prod-web — ubuntu@11.11.33.22:22
tags: local,wcf
notes: hyperv, production
Launching SSH...
ssh-buddy gui
# or
python ssh_buddy.py gui| Action | How |
|---|---|
| Connect | Double-click a row, OR select + click ⚡ CONNECT |
| Search | Type anything in the search bar (live filter) |
| Add server | Click ➕ Add |
| Edit server | Select row → ✏️ Edit |
| Delete | Select row → 🗑️ Delete (or press Delete key) |
| Sort | Click any column header |
- Saved password: stored in OS keychain (Windows Credential Manager / libsecret on Linux)
- No keychain available (headless Linux): auto-fallback to
~/.ssh_buddy/vault.json(XOR-obfuscated, not military-grade but not plaintext) - No password saved: SSH Buddy asks at connect time, with option to save
- Key-based auth: just leave password blank — SSH Buddy passes through to normal SSH
pip install keyrings.alt # simple file-based keyring
# OR uncomment it in requirements.txt and re-run install.shssh-buddy/
├── ssh_buddy.py ← entry point
├── cli.py ← all CLI commands
├── gui.py ← tkinter GUI
├── db.py ← SQLite operations
├── keystore.py ← password storage
├── connector.py ← SSH execution engine
├── requirements.txt
├── install.sh ← Linux installer
├── install.bat ← Windows installer
└── README.md
Data stored at: ~/.ssh_buddy/servers.db and ~/.ssh_buddy/vault.json
# Export
ssh-buddy export my_servers.json
# On new machine
ssh-buddy import my_servers.json
# Then re-add passwords (not exported for security)- Tags: use comma-separated keywords like
local, prodmakes search fast - Notes: write what the server does
"Hyperv, local, prod" - Alias: make it memorable
prod-web,db-01,staging-appsrv - Search: partial match type
505to find all11.22.33.Xservers