SSH Key Generator

ED25519 / RSA SSH keys in-browserHow to use →
ED25519 GitHub GitLab AWS Azure No Data Stored
SSH Key Configuration
Fixed 256-bit (≈ RSA 3072)
Convert your own key to .ppk already have an OpenSSH / PEM key?

Generated Keys

Ready

Your SSH keys will appear here

Select algorithm, key size, and click "Generate SSH Keys"

Bash Executor

How to Generate an SSH Key

1 Select algorithm (ED25519 or RSA) and key size above
2 Click Generate SSH Keys
3 Copy your public key or download .pem/.pub files
4 Add public key to GitHub, GitLab, AWS, or ~/.ssh/authorized_keys

Use for GitHub, GitLab, AWS, Azure

GitHub – Settings → SSH and GPG keys → New SSH key → paste public key
GitLab – Preferences → SSH Keys → paste public key
AWS EC2 – Paste public key when creating a key pair, or import to existing instance
Azure – Use public key when creating Linux VM, or add to ~/.ssh/authorized_keys

Documentation

SSH (Secure Shell) is a cryptographic network protocol for secure remote login, command execution, and file transfer. SSH keys replace passwords with asymmetric key pairs: a private key (kept secret) and a public key (shared with servers).

When you connect, the server verifies your identity using the public key. The private key never leaves your machine (or this tool’s secure generation flow).

  • ED25519 (recommended) – 256-bit elliptic curve. Fast, small, secure. Use for new keys.
  • RSA – 1024/2048/4096-bit. Widely supported; prefer 2048+ bits. 4096 for higher security.
  • ECDSA – P-256, P-384, P-521. Good balance of size and security.
  • DSA – Deprecated. Avoid for new keys.
# ED25519 (recommended)
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519 -N ""

# RSA 4096
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/id_rsa -N ""

# Display fingerprint
ssh-keygen -lf ~/.ssh/id_ed25519.pub

Use the ssh-keygen & test tab above to run these in the browser.

ED25519 public key (single line, share this):

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGW7zkzy1o3jU8+7VqQK8xXj3H5n2pL8qR9sT0uV1wX [email protected]

ED25519 private key (keep secret, multi-line OpenSSH format):

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACBlu89M8taN41PPu1akCvMV49x+Z9qS/KkfbE9LldcF1wAAAJgdmB2YHZgd
AAAAC2VkMjU1MTktc2hrAAAAIGW7zkzy1o3jU8+7VqQK8xXj3H5n2pL8qR9sT0uV1wXAAAA
EGW7zkzy1o3jU8+7VqQK8xXj3H5n2pL8qR9sT0uV1wXAAAAAAAAAAECAQAAAAEAAAAGAAAA
C2VkMjU1MTktc2hrAAAAIGW7zkzy1o3jU8+7VqQK8xXj3H5n2pL8qR9sT0uV1wXAAAADAAA
AAIAAAAcAAAAAQAAAAtzc2gtZWQyNTUxOQAAACBlu89M8taN41PPu1akCvMV49x+Z9qS/Kk
fbE9LldcF1wUAAAAgZbvPTPLWjeNTz7tWpArzFePcfmfakvypH2xPS5XXBdcFAAAAFHVzZX
JAZXhhbXBsZS5jb20BAAAAAA==
-----END OPENSSH PRIVATE KEY-----

RSA 2048 public key (single line):

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD...longerBase64...== [email protected]

RSA private key (PEM format, typically 27+ lines for 2048-bit):

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcnNh
AAAAAwEAAQAAAYEA3...base64 continues for many lines...
-----END OPENSSH PRIVATE KEY-----

Generate your own keys above to see real output. Never share your private key.

# Copy public key to server (easiest)
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@hostname

# Or manually: append public key to
~/.ssh/authorized_keys

After deploying, connect with ssh user@hostname. No password required.

  • Never share your private key. Only share the public key.
  • Use a passphrase for the private key and rely on ssh-agent during sessions.
  • Verify server fingerprints on first connection to avoid MITM attacks.
  • Prefer ED25519 or RSA 2048+ for new keys.
  • Store private keys with restricted permissions: chmod 600 ~/.ssh/id_*.

Frequently Asked Questions

What is the most secure SSH key algorithm?

ED25519 is recommended for new SSH keys. It offers 128-bit security (equivalent to RSA 3072-bit), faster operations, smaller key sizes, and resistance to timing attacks. RSA 4096-bit is a solid alternative for compatibility.

Should I use a passphrase for my SSH key?

Yes. A passphrase adds an extra layer of encryption to your private key. Use ssh-agent to avoid typing it repeatedly during active sessions.

How do I copy my SSH public key to a server?

Use ssh-copy-id: ssh-copy-id -i ~/.ssh/id_ed25519.pub user@hostname. Or manually append your public key to ~/.ssh/authorized_keys on the server.

What is an SSH key fingerprint?

The fingerprint is a short hash (e.g. SHA256:...) of your public key. Use ssh-keygen -lf ~/.ssh/id_ed25519.pub to display it. Verify fingerprints when connecting to new servers.

How do I download my SSH keys?

After generating keys, click "Download .pem" for the private key or "Download .pub" for the public key. Files are saved with algorithm-specific names (id_ed25519, id_rsa, etc.).

How do I add my SSH key to GitHub?

Generate your key above, then copy the public key. In GitHub: Settings → SSH and GPG keys → New SSH key → paste the key and save. Use the same key for GitLab, Bitbucket, and SSH servers.

About This SSH Key Tool & Methodology

This SSH key generator produces OpenSSH-format key pairs using standard algorithms (ED25519, RSA, ECDSA, DSA). Key generation runs on our secure server using industry-standard Java cryptography; the private key is transmitted over HTTPS only when you request it, and we do not log or store any keys. For fully client-side generation, use the ssh-keygen & test Bash tab to run ssh-keygen in your browser.

Authorship & Expertise

  • Author: Anish Nath
  • Background: Security and PKI tools for developers
  • Standards: OpenSSH format, RFC 4253, RFC 8709 (Ed25519)

Trust & Privacy

  • Privacy: Keys are never stored or logged on our servers
  • HTTPS: All traffic encrypted; keys transmitted only when displayed
  • Support: @anish2good

Support This Free Tool

Every coffee helps keep the servers running. Every book sale funds the next tool I'm dreaming up. You're not just supporting a site — you're helping me build what developers actually need.

500K+ users
200+ tools
100% private
Privacy Guarantee: Private keys you enter or generate are never stored on our servers. All tools are served over HTTPS.