Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Masumoou/ssh-buddy

Open more actions menu

Repository files navigation

⚡ SSH Buddy

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.


🚀 Quick Start

Windows (1-Click Install)

Open PowerShell and run:

iwr https://raw.githubusercontent.com/Masumoou/ssh-buddy/main/install.ps1 -UseBasicParsing | iex

Linux / macOS

curl -sL https://raw.githubusercontent.com/Masumoou/ssh-buddy/main/install.sh | bash

Usage

After installation, restart your terminal.

ssh user@192.168.1.1   # Automatically intercepted to show GUI if new
sshbuddy               # Launch GUI from ANYWHERE

📦 Requirements

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)

💻 CLI Commands

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

Example Connect Flow (CLI)

$ 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...

🖥️ GUI

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

🔐 Password Storage

  • 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

Headless Linux (no desktop)

pip install keyrings.alt    # simple file-based keyring
# OR uncomment it in requirements.txt and re-run install.sh

📁 File Structure

ssh-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


🔄 Backup / Move to Another Machine

# Export
ssh-buddy export my_servers.json

# On new machine
ssh-buddy import my_servers.json
# Then re-add passwords (not exported for security)

🛠️ Tips

  • Tags: use comma-separated keywords like local, prod makes 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 505 to find all 11.22.33.X servers

About

ssh agent (ssh-buddy Never forget a server IP, username, or password again.)

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.