Skip to main content

Passwordless SSH setup and ssh-copy-id alternative for Raspberry Pi, NVIDIA Jetson or any Linux device

Project description

ssh-keyup

CI PyPI Python Platform

Set up passwordless SSH on Raspberry Pi, NVIDIA Jetson or any Linux device in one command.

Tired of juggling ssh-keygen, ssh-copy-id (missing on Windows) and ~/.ssh/config edits every time you set up a new device?

ssh-keyup handles all three in a single interactive session.

ssh-keyup demo

Quickstart

Install globally with pip:

pip install ssh-keyup

ssh-keyup   # ready to use anywhere

[!TIP] If ssh-keyup is missing or runs an old version after install, the new script sits in a folder outside PATH (pip warns about this). Add that folder to PATH or use pipx: pipx install ssh-keyup.

Or run directly without installing:

git clone https://github.com/Kurokesu/ssh-keyup.git
cd ssh-keyup
python ssh_keyup.py   # Windows
python3 ssh_keyup.py  # Linux

Follow the prompts, enter the remote password once and you're done.

SSH from terminal:

ssh mypi   # no password, ever again

Or open VSCode Remote - SSH, your ~/.ssh/config is already set up. Press Ctrl+Shift+P, select Remote-SSH: Connect to Host, pick your alias and get a full IDE on your remote device, no password:

VSCode Remote SSH

Skip the prompts by passing arguments:

ssh-keyup pi@192.168.1.23 mypi   # user, host and alias in one go

Or configure a whole fleet:

for host in 192.168.1.10 192.168.1.11 192.168.1.12; do
  ssh-keyup pi@$host
done

Flags (--host, --user, --alias) work too, see ssh-keyup --help.

List or remove entries ssh-keyup manages:

ssh-keyup --list
ssh-keyup --remove mypi   # deletes its key pair too

Why?

# without ssh-keyup (repeat for every new device)
ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519_rpi5
scp ~/.ssh/id_ed25519_rpi5.pub trinity@192.168.1.23:~/
ssh trinity@192.168.1.23 "mkdir -p ~/.ssh && chmod 700 ~/.ssh"
ssh trinity@192.168.1.23 "cat ~/id_ed25519_rpi5.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm ~/id_ed25519_rpi5.pub"
nano ~/.ssh/config # add Host entry manually
...

# with ssh-keyup
ssh-keyup

Prerequisites

Python 3.8+ and OpenSSH tools (ssh, ssh-keygen) must be in PATH.

  • Windows 10/11: Install Python from python.org or the Microsoft Store. OpenSSH Client is included via Settings > Optional Features or ships with Git for Windows.
  • Linux: sudo apt install python3 openssh-client (usually pre-installed).

Features

  • Generates a per-host Ed25519 key pair (~/.ssh/id_ed25519_<alias>)
  • Deploys public key to remote host in a single SSH session, only one password prompt
  • Never touches your password. ssh-keyup only pipes the public key and SSH handles password authentication directly through its own terminal
  • Adds a named entry to ~/.ssh/config, works instantly with ssh <alias> and VSCode Remote SSH
  • Detects and recovers from host key mismatches (common after reflashing)
  • Handles re-runs gracefully: reuses existing keys or offers regeneration, detects duplicate config entries
  • Works with any device reachable over SSH: Raspberry Pi, NVIDIA Jetson, Orange Pi, VMs, servers
  • Zero Python dependencies, standard library only. Uses system OpenSSH (ssh, ssh-keygen)
  • Installs via pip or runs as a single script

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

ssh_keyup-1.1.1.tar.gz (23.9 kB view details)

Uploaded Source

Built Distribution

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

ssh_keyup-1.1.1-py3-none-any.whl (24.3 kB view details)

Uploaded Python 3

File details

Details for the file ssh_keyup-1.1.1.tar.gz.

File metadata

  • Download URL: ssh_keyup-1.1.1.tar.gz
  • Upload date:
  • Size: 23.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ssh_keyup-1.1.1.tar.gz
Algorithm Hash digest
SHA256 36238d8dfa53b8a1c70257c83e80bc6bdff306bc96e34bb3a4c51e64390ea30a
MD5 21086dea0b6896a0cf743ea87315ea0e
BLAKE2b-256 681d059ba8308641e25fe233f6976bb51c18eac8b3e0db17e3f03f8c19562308

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssh_keyup-1.1.1.tar.gz:

Publisher: release.yml on Kurokesu/ssh-keyup

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ssh_keyup-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: ssh_keyup-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 24.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ssh_keyup-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dd4e9133dbfca189051c9499564de72151031a0ec2c0acb8c5b63b3c1f0ed2ff
MD5 66eebe162aa174dd442c44dc2eee8a5c
BLAKE2b-256 f3e15b2b1982bdddd77c68832fbc09dfdf28edefd2e3b28a608b6fa0251098b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssh_keyup-1.1.1-py3-none-any.whl:

Publisher: release.yml on Kurokesu/ssh-keyup

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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