SSH Key Generator
Generate an Ed25519, ECDSA or RSA key pair, with the OpenSSH public key and fingerprints.
Key
The comment is the trailing label in the public key line. It is for your own reference and has no effect on the key. Put something that tells you which machine it came from.
Generation happens with the browser's own key generator, in this tab. Nothing is sent, and there is no key that we hold. That is also why a key you make here cannot be recovered from anywhere — if you lose it, it is gone.
Public key
This is what ssh-keygen -lf and ssh -o FingerprintHash=sha256 print. Compare it with what the server shows you — if the two differ, something is in the middle.
MD5 fingerprints only appear in older documentation and in a few vendors' consoles. Nothing new should use them.
Private key
This is OpenSSH's own private-key format, the one ssh and ssh-keygen read directly. Save it as ~/.ssh/id_ed25519, then lock it down: chmod 600 ~/.ssh/id_ed25519. OpenSSH refuses to use a private key that other users on the machine can read, and that refusal is a feature.
It carries no passphrase. Add one without changing the key itself: ssh-keygen -p -f ~/.ssh/id_ed25519. On Windows, PuTTY's puttygen imports this format as-is.
PKCS#8 PEM
The same key in the container Java, Python, Node and OpenSSL expect. It is here because it is the right file for those tools — not because it is the safer one to keep. If you only need SSH, use the OpenSSH key above.
OpenSSH itself reads this form for RSA and ECDSA but not for Ed25519: ssh-keygen -y on a PKCS#8 Ed25519 key answers invalid format, including on a key OpenSSL has just written. That was measured against OpenSSH 9.6, and it is why the OpenSSH container is the one shown first.
Save what you type here, on this device? Your work would go into this browser's local storage, so a refresh or a trip to another tool does not wipe it. It is never uploaded, and there is no account.
Being straight about the trade-off: anything kept there can be read by anyone who can use this browser profile, and by any script that later runs on this site. A tool page can hold a private key, a password or a signed token. Saving is convenient; it is not private.
Saved on this device.
Not saved — this page forgets your work when you leave it.
About this tool
Generate an SSH key pair in the browser — Ed25519, ECDSA on P-256, P-384 or P-521, or RSA at 2048, 3072 or 4096 bits — and download the private key in the format your own ssh reads. The private key is OpenSSH's native openssh-key-v1 container, which is what ssh-keygen writes and what ssh accepts, with a PKCS#8 PEM copy offered beside it for tools that want one. Keys are generated locally with WebCrypto and are never sent anywhere.
Questions
- Why is the private key in OpenSSH format instead of PKCS#8?
- Because PKCS#8 Ed25519 is not readable by OpenSSH. Measured on OpenSSH 9.6, ssh-keygen -y on a PKCS#8 Ed25519 key fails with "invalid format", while the same key in the openssh-key-v1 container works. PKCS#8 is convenient and widely supported by other tools, so it is offered as a second, clearly labelled panel — but the file you download for ssh is the one ssh can actually open. Claiming the wrong one is portable would be worse than the extra panel.
- How do I use the key once I have downloaded it?
- Save the private key, then chmod 600 it — ssh refuses to read a private key that anyone else can open, and that refusal is a feature. Copy the public key into ~/.ssh/authorized_keys on the server, or hand it to whatever service you are setting up. The public key is the one-line ssh-ed25519 or ssh-rsa form that starts with the key type.
- Which key type should I pick?
- Ed25519 unless you have a reason not to: it is small, fast, and has no parameter choices to get wrong. Use RSA if you have to talk to something old — 3072 bits or more, since 2048 is the floor rather than a recommendation. ECDSA is there for compatibility with systems that expect it; it is fine, but there is no advantage over Ed25519 on a modern system.
- Are the fingerprints real, or does the page just make them up?
- They are computed from the same wire format ssh uses, and they were checked against ssh-keygen as an independent oracle — both the SHA-256 and the MD5 form, for every key type the page offers. The private key was checked further: a real ssh-keygen -Y sign and -Y verify round trip, plus openssl pkey -check on the PKCS#8 copy. That is stronger evidence than the page agreeing with itself, but it was measured on Linux OpenSSH 9.6 — older OpenSSH and Windows tools such as puttygen are untested here.