Skip to main content

Deterministic Ed25519 SSH key generation from a seed passphrase, via configurable KDF and salt-hash backends.

Project description

detssh

Deterministic Ed25519 SSH key generation from a seed passphrase. Same passphrase + same parameters → same keypair, every time, on any machine - nothing to back up but what's in your head.

detssh

Prompts for everything (passphrase hidden + confirmed) and writes to the same place ssh-keygen would: ~/.ssh/id_ed25519 / ~/.ssh/id_ed25519.pub (mode 600/700, ~/.ssh created if missing). Pass --output to write somewhere else instead.

Non-interactively:

detssh --kdf argon2id --salt-algo blake2b --seed "..." --label github --overwrite-files

Any flag switches to non-interactive mode: missing optional fields fall back to their defaults, --seed is the only required one. Passing --seed on the command line puts it in your shell history and process list (ps aux) - fine for local scripting, but prefer the interactive prompt when that matters.

Backends

  • --kdf: argon2id (default), argon2i, argon2d, scrypt, pbkdf2, bcrypt_pbkdf
  • --salt-algo: blake2b (default), blake2s, sha256, sha384, sha512, sha3_256, sha3_384, sha3_512

Each combination has its own options (cost knobs, salt digest size, etc.), with their valid ranges shown in both --help and the interactive prompts. See them with:

detssh --kdf <kdf> --salt-algo <salt-algo> --help

We recommend sticking with the defaults (argon2id, memory-hard with a high cost) unless you have a specific reason not to - they make brute-forcing your passphrase significantly more expensive than faster KDFs like pbkdf2.

Cost knobs (iterations, memory, cost, rounds, ...) also carry a soft safety limit meant to catch typos before they cost you minutes of derivation time. In interactive mode, going over one doesn't interrupt you - everything you exceeded is summarized in one confirmation at the very end. In flag mode, it fails immediately unless you pass --force-allow-soft-constraints.

Determinism guarantee

Same explicit parameters → same key, across any release sharing the same major version - only a major version bump may change key derivation. That guarantee starts at 1.0; we're still on 0.x, so it doesn't apply yet (see tests/golden/README.md).

Development

uv sync
uv run pytest
uv run ruff check .

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

detssh-0.1.0.tar.gz (63.8 kB view details)

Uploaded Source

Built Distribution

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

detssh-0.1.0-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file detssh-0.1.0.tar.gz.

File metadata

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

File hashes

Hashes for detssh-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b1a5ad94dd3ae82e9fdd20b207904354130769865a9b7d60e651c0291fc3bbd3
MD5 1df60fb0a485b9a9011d5a0116768f82
BLAKE2b-256 eb7b14126b4d699a52490da8dac0c35f0102ec2ce077818ca290c07233a04295

See more details on using hashes here.

Provenance

The following attestation bundles were made for detssh-0.1.0.tar.gz:

Publisher: publish.yml on isik-kaplan/detssh

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

File details

Details for the file detssh-0.1.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for detssh-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ac6d859380b6bd25c30c3cba2a62b5d96a8be66932a8bd32e12788225f20a890
MD5 fe6a57f763b502bcbad44c173d79b1c4
BLAKE2b-256 20e6aa322a3052ac4fcc06e78176b2c42b00480ae3604f02231c598c8fbdab3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for detssh-0.1.0-py3-none-any.whl:

Publisher: publish.yml on isik-kaplan/detssh

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