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.
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
sshcommand 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
securityCLI for Keychain andexpectfor 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14b493a555810c2bae80f092d62e3b49ded0b3c219a5e368b5c026a383990c7a
|
|
| MD5 |
674e79654bfee98ff4fbfb248d8851c8
|
|
| BLAKE2b-256 |
ac74a5d76a0bc3bbfca6d957b1d5f5fa6b80d9939a29beae316ea905885e6af9
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a069e112f3723949d4d341220181d94575b81541bce4d63a16d5d168a28bbb47
|
|
| MD5 |
ba12284fae0732eceb8acc2efd7a6625
|
|
| BLAKE2b-256 |
321844271840a662e1e9f2e0840c79d9a1f3ec249bdf0f752e7c58ebe9cdb354
|