sshme
Interactive SSH profile selector for the terminal. Pick a host from your ~/.ssh/config with arrow keys or type to filter, then connect — or open an SFTP session, install your public key, or drop into a tmux window.
Installation
uv tool install sshme
# or
pip install sshme
Usage
sshme [options] [-- <ssh-flags>]
Run sshme with no arguments to open the selection menu. Navigate with arrow keys or type to filter. Recent connections appear at the top.
Options
| Flag | Description |
|---|---|
-c, --config <path> |
SSH config file (default: ~/.ssh/config) |
-l [USER] |
Login user — omit USER to be prompted |
-i [KEYFILE] |
Identity file — omit KEYFILE to choose from ~/.ssh/ |
-t, --tmux |
Attach to or create a remote tmux session named ssh after connecting |
--sftp |
Open an SFTP session instead of SSH |
--copy-id |
Run ssh-copy-id to install your public key |
-- |
Pass remaining arguments directly to ssh, sftp, or ssh-copy-id |
Examples
# Select a host and connect
sshme
# Connect as a specific user
sshme -l root
# Open SFTP with a specific identity file
sshme --sftp -i ~/.ssh/work_key
# Choose an identity file interactively
sshme -i
# Forward a local port
sshme -- -L 8080:localhost:8080
# Install your public key on a host
sshme --copy-id
tmux Integration
When a tmux session is active, sshme opens the connection in a new window named SSH:<host>. If a window with that name already exists, sshme switches to it instead of opening a duplicate.
Config Files
sshme reads hosts from ~/.ssh/config, including any Include directives. Supplement or annotate those hosts with a TOML config file.
Discovery order:
~/.config/sshme/config.toml— user-wide defaults.sshme.tomlorsshme.toml— project-local, searched upward from the current directory
Project-local entries shadow user-wide entries when names conflict.
Schema
# Add a host not in ~/.ssh/config
[[hosts]]
name = "devbox"
hostname = "192.168.1.42"
port = 2222
user = "dev"
description = "Local dev VM"
# Annotate an existing SSH config host with a description
[[hosts]]
name = "prod"
description = "Production cluster — handle with care"
All fields except name are optional. For hosts already in ~/.ssh/config, hostname, port, and user appear as menu hints; OpenSSH resolves the connection from its config. For hosts defined only in TOML, those fields drive the connection.
History
sshme records each selected profile in ~/.local/share/sshme/history.json and sorts recent hosts to the top of the menu. Set XDG_DATA_HOME to store the file elsewhere.
Metadata
Release files for sshme 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sshme-2.0.0.tar.gz | 7.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sshme-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.6 kB
Release files / sshme-2.0.0.tar.gz
| Download URL | sshme-2.0.0.tar.gz |
|---|---|
| Size | 7.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eb98c8aa5732653462473d777f59701559cbb19ac9b4eb049c7abd2bcab93005
|
|
BLAKE2b-256 checksum How to use checksums |
844bbba3de7560bd95e3d626f69773e6bbe105ffcf3d527bdd1ddcb5c125b9da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"26.11","id":"zokor","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / sshme-2.0.0-py3-none-any.whl
| Download URL | sshme-2.0.0-py3-none-any.whl |
|---|---|
| Size | 10.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
eca8c25815b847ff454d057913cdf464830ddfe8f2693541b0e743c5e5ee8e00
|
|
BLAKE2b-256 checksum How to use checksums |
f45353ffbef028e32b0e8dc357e282e0607732a03f43c0188f2677dbc64325df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"26.11","id":"zokor","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|