Skip to main content

Terminal SSH connection manager with macOS Keychain integration and Matrix-themed TUI

Project description

SSHM - SSH Connection Manager

A terminal-based SSH connection manager for macOS with a Matrix-themed TUI. Store server credentials securely (passwords in macOS Keychain), and connect with a single keypress.

Python macOS License

Features

  • Interactive TUI - Navigate servers with arrow keys, connect with Enter
  • Secure password storage - Passwords saved in macOS Keychain (never plaintext)
  • Auto sudo - Optionally elevate to root automatically after SSH login
  • Search/filter - Quickly find servers by name, host, user, or group
  • Copy SSH command - Copy the raw ssh command to clipboard
  • Matrix theme - Green-on-black hacker aesthetic

Install

Option A: pipx (recommended)

One command, no manual venv or alias needed:

pipx install sshm-terminal

Don't have pipx? Install it first: brew install pipx && pipx ensurepath

Option B: Homebrew

brew tap dailydeploy365/tap https://github.com/dailydeploy365/homebrew-tap
brew install sshm

Option C: From source (for development)

git clone https://github.com/dailydeploy365/sshm.git
cd sshm
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Then add an alias so sshm works from anywhere:

# Add to ~/.zshrc
alias sshm="/path/to/sshm/.venv/bin/sshm"
source ~/.zshrc

Optional: install sshpass for cleaner password auth

brew install esolitos/ipa/sshpass

Without it, the app falls back to macOS built-in expect which works fine.

Requirements

  • macOS (uses security CLI for Keychain and expect for password automation)
  • Python 3.10+

Usage

Launch the TUI

sshm

Quick list from the terminal

sshm list

TUI Keybindings

Key Action
a Add a new server
e Edit selected server
d Delete selected server
Enter SSH into selected server
c Copy SSH command to clipboard
/ Search / filter servers
Esc Close search, or quit
q Quit

Add/Edit Form

Key Action
ctrl+s Save
Esc Cancel
Tab Next field

Delete Confirmation

Key Action
y / Enter Confirm
n / Esc Cancel

How-To: Add and connect to a server

Step 1 - Run sshm

Step 2 - Press a to open the Add Server form

Step 3 - Fill in the fields:

Name:       Production API
Host / IP:  192.168.1.50
Port:       2222
User:       deploy
Group:      production
Password:   ••••••••
SSH Key:    (leave empty if using password)

Check "Auto sudo" if you want to automatically get a root shell after login.

Step 4 - Press ctrl+s to save

Step 5 - Select the server in the list and press Enter to connect

That's it. Next time, just sshm → arrow to your server → Enter.

How-To: Use SSH key instead of password

Step 1 - When adding/editing a server, leave the Password field empty

Step 2 - Fill in the SSH Key Path field:

SSH Key Path:  ~/.ssh/id_rsa

Step 3 - Save with ctrl+s

The app will use ssh -i ~/.ssh/id_rsa when connecting.

How-To: Copy the SSH command

Select a server and press c. The raw SSH command gets copied to your clipboard:

ssh -p 2222 deploy@192.168.1.50

Useful for scripts, sharing with teammates, or pasting into another terminal.

How it works

What Where
Server metadata ~/.sshm/servers.json
Passwords macOS Keychain (via security CLI)
SSH connection sshpass if installed, else expect
Auto sudo expect script (SSH login + sudo -i)

CLI Commands

sshm          Open the TUI manager
sshm list     List saved servers in the terminal
sshm help     Show usage info

Uninstall

# Remove the alias from ~/.zshrc
# Then:
rm -rf ~/.sshm            # Remove server data
pip uninstall sshm         # Remove the package

Passwords stored in macOS Keychain can be removed via Keychain Access.app (search for "sshm").

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sshm_terminal-1.0.0.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sshm_terminal-1.0.0-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file sshm_terminal-1.0.0.tar.gz.

File metadata

  • Download URL: sshm_terminal-1.0.0.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for sshm_terminal-1.0.0.tar.gz
Algorithm Hash digest
SHA256 14b493a555810c2bae80f092d62e3b49ded0b3c219a5e368b5c026a383990c7a
MD5 674e79654bfee98ff4fbfb248d8851c8
BLAKE2b-256 ac74a5d76a0bc3bbfca6d957b1d5f5fa6b80d9939a29beae316ea905885e6af9

See more details on using hashes here.

File details

Details for the file sshm_terminal-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: sshm_terminal-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 11.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for sshm_terminal-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a069e112f3723949d4d341220181d94575b81541bce4d63a16d5d168a28bbb47
MD5 ba12284fae0732eceb8acc2efd7a6625
BLAKE2b-256 321844271840a662e1e9f2e0840c79d9a1f3ec249bdf0f752e7c58ebe9cdb354

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page