s is a tiny Rust CLI that wraps the system OpenSSH client, keeps a local history of recently used SSH targets, and can install your local public key on a remote server.
When you run s with no arguments, it loads your saved targets, opens an embedded fuzzy selector, and connects to the selected target with the system ssh binary. When you run s <target>, it records that target first, updates recency and usage count, then runs ssh <target>.
When you run s add-key, it shows recent targets interactively and installs your local public key on the selected host. When you run s add-key <target>, it installs the public key directly on that target. s never copies a private key.
sshavailable inPATHssh-copy-idis optional; if present,s add-keyprefers it and otherwise falls back to a standardauthorized_keysappend flow overssh
cargo build --releaseThe binary will be at:
target/release/ssShow recent SSH targets through the embedded selector, then connect to the selected one.
s prodRecord prod in local history, update recency, then run ssh prod.
s user@example.comRecord user@example.com in local history, update recency, then run ssh user@example.com.
s add-keyShow recent SSH targets through the embedded selector, then install your local public key on the selected host.
s add-key prodInstall your local public key on prod.
s add-key -p 2222 root@1.2.3.4Install your local public key on root@1.2.3.4 using SSH port 2222.
s add-key --key ~/.ssh/custom.pub user@example.comInstall the explicitly selected public key on user@example.com.
History is stored as JSON at:
$XDG_CONFIG_HOME/s/history.jsonwhenXDG_CONFIG_HOMEis set- otherwise
~/.config/s/history.json
Each entry has this shape:
{
"target": "user@host",
"last_used_at": 1700000000,
"use_count": 3
}- History is de-duplicated by exact target string.
- Entries are shown by most recent use first.
s add-keyrecords the target in history too, so recently provisioned hosts stay easy to reach.sdoes not manage passwords, private keys,ssh-agent, or SSH protocol details.suses the systemsshbinary and an embedded Rust fuzzy selector.- For
add-key,sprefersssh-copy-idwhen available and otherwise falls back to a remoteauthorized_keysappend command.