
The World-Class SSH Key Generator: Theory, Practice, and Battle-Tested Workflows
A deep, practical guide to SSH key theory and real-world usage, plus a full walkthrough of the gsstk SSH Key Generator: RSA, ECDSA, Ed25519,...
✨TL;DR / Executive Summary
A deep, practical guide to SSH key theory and real-world usage, plus a full walkthrough of the gsstk SSH Key Generator: RSA, ECDSA, Ed25519,...
TL;DR (Too Long; Didn't Read)
This guide explains SSH keys from the math to the muscle memory. Then it shows how to use the gsstk SSH Key Generator to create RSA/ECDSA/Ed25519 keys, export PKCS8 or OpenSSH private keys, encrypt private keys (PBKDF2 + AES-GCM), compute SHA256/MD5 fingerprints, build known_hosts and ssh_config entries, generate PPK for PuTTY, validate keys, and verify key pairs. Everything runs locally in your browser.
SSH is one of those technologies that is so ubiquitous you can easily forget it is a cryptographic marvel. We rely on it to secure Git pushes, production servers, data pipelines, CI/CD, and entire fleets of devices. But too many teams still treat SSH keys as mysterious blobs and copy-paste cargo cults.
This article is a complete, long-form guide to SSH keys that you can share with your team. It covers the theory, the tradeoffs, and the real-world workflows you need to operate with confidence. And it uses the gsstk SSH Key Generator as the practical backbone for hands-on examples.
If you want a tool that is fast, safe, and practical, you are in the right place. If you want to understand why the tool works, you are also in the right place.
1) The mental model: what an SSH key really is
An SSH key pair is two related keys:
- A private key that never leaves your machine.
- A public key you can share with servers or services (GitHub, GitLab, servers, cloud providers).
SSH uses public key cryptography. The basic idea:
- Your client proves it has the private key without revealing it.
- The server compares that proof to your public key.
- If the proof is valid, the server lets you in.
The handshake (very simplified)
- The server sends a challenge.
- The client signs the challenge with the private key.
- The server verifies the signature using the public key.
The server never needs your private key. It only needs your public key.
2) Key algorithms: RSA vs ECDSA vs Ed25519
You will see three algorithms in SSH environments:
RSA
- Oldest and most compatible.
- Larger keys for equivalent security.
- Typical sizes: 2048, 3072, 4096 bits.
- Still accepted almost everywhere.
ECDSA
- Elliptic curve cryptography (NIST curves).
- Smaller keys, fast signing.
- Supported in modern OpenSSH and most enterprise environments.
Ed25519
- Modern curve designed for security and speed.
- Great performance and compact keys.
- Not supported on very old systems.
Rule of thumb:
- If you need maximum compatibility, RSA (3072 or 4096) is still safe.
- If you control the environment, Ed25519 is the modern default.
- ECDSA can be a great compromise when Ed25519 is not available.
The gsstk SSH Key Generator supports all three so you can choose based on your environment.
3) Private key formats: PKCS8 vs OpenSSH
There are two common private key formats:
- PKCS8 (PEM): a widely supported private key format.
- OpenSSH private key: a newer OpenSSH-specific format.
Most tooling understands PKCS8. OpenSSH format is native to OpenSSH and often preferred for modern workflows.
The gsstk SSH Key Generator lets you export either format, and it locks the format automatically when you enable encryption so you do not accidentally create invalid combinations.
4) Passphrases and local encryption
A passphrase is not just a password. It is a second factor on top of your private key. If your laptop is compromised, the passphrase can still save you.
The gsstk generator can encrypt the private key locally using:
- PBKDF2 with SHA-256 (100,000 iterations)
- AES-GCM 256-bit
It then wraps the encrypted payload in a GSSTK encrypted format for safe storage and later decryption inside the tool.
This makes it practical to create encrypted private keys even for users who do not want to deal with CLI tooling.
5) Fingerprints: the checksum for trust
Fingerprints are short hashes that represent your public key. They are used to:
- Verify you copied the right key.
- Confirm a server key fingerprint.
- Compare keys without scanning long blobs.
The generator creates:
- SHA256 fingerprint (modern)
- MD5 fingerprint (legacy, still used in some older systems)
You can copy them directly for audits and documentation.
6) known_hosts: the server identity ledger
The file ~/.ssh/known_hosts is the client-side registry of server keys. It prevents man-in-the-middle attacks by warning you when a server key changes.
The generator can build a known_hosts entry for you using:
- Hostnames (single or multiple)
- Port (for non-standard SSH ports)
- A public key (either generated or provided)
This is critical for teams managing SSH access to internal services or private Git servers.
7) ssh_config: make your SSH usage human
The ~/.ssh/config file lets you define friendly aliases and settings so you do not have to remember long commands.
The generator builds a ready-to-copy ssh_config block, with fields like:
- Host (alias)
- HostName (server address)
- User
- Port
- IdentityFile
- AddKeysToAgent
- IdentitiesOnly
This means you can connect with ssh prod instead of typing a 120-character command.
8) PPK: PuTTY still exists
Windows teams and some legacy workflows still use PuTTY, which relies on the PPK format. Converting keys by hand is error-prone.
The generator can build a PPK file (RSA only), and lets you download it directly. It also includes the PPK in the bundle ZIP if you have generated it.
9) Key validation and pair verification
Two classic problems:
- You got a key from someone else. Is it valid?
- Do these two keys actually match?
The tool solves both:
- Validation: paste a public key or a private key. It detects type, warns about RSA sizes or SHA1 usage, and computes fingerprints.
- Pair verification: paste public + private key and the tool will derive the public key from the private key and compare.
This is incredibly useful in incident response, key rotation, or when debugging SSH access failures.
The gsstk SSH Key Generator: the full walkthrough
This section is the full practical guide. If you only want to use the tool, you can skip the theory above and start here.
Step 1: Choose your key type
Open the SSH Key Generator and select one of:
- RSA (with size 2048, 3072, 4096)
- ECDSA (P-256, P-384, P-521)
- Ed25519
Guidance:
- Use RSA 3072 if compatibility is required.
- Use Ed25519 if your systems support it.
Step 2: Add a comment
SSH public keys support comments. Use them to identify the origin of the key:
alice@laptopdeploy@ci-runner-01prod-rotation-2026
This comment shows up in the OpenSSH public key and helps during audits.
Step 3: Choose the private key format
- PKCS8 (PEM) for universal compatibility.
- OpenSSH for modern OpenSSH usage.
If you enable encryption, the tool locks the format to keep output safe and consistent.
Step 4: Encrypt (optional but recommended)
Toggle Encrypt private key and set a passphrase (minimum 8 characters). The tool will create a GSSTK encrypted private key.
This is ideal for:
- Team members who store keys on laptops
- Engineers rotating keys on shared systems
- Any workflow that moves keys across machines
Step 5: Generate keys
Click Generate. The tool will create:
- Private key (PKCS8 or OpenSSH or GSSTK encrypted)
- Public key (OpenSSH)
- Fingerprints (SHA256 and MD5)
Copy or download as needed.
Step 6: Download a bundle
The Bundle ZIP includes:
- Private key
- Public key
- known_hosts (if created)
- ssh_config (if created)
- PPK (if generated)
This is perfect for onboarding, migrations, and secure handoffs.
Step 7: Generate a known_hosts entry
Fill:
- Hosts:
github.com gitlab.com - Port:
22or custom port - Use the generated public key or paste another
The output will look like:
[github.com]:22 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAA...Download or copy it to ~/.ssh/known_hosts.
Step 8: Generate an ssh_config block
Provide:
- Host:
prod - HostName:
prod.mycompany.com - User:
ubuntu - Port:
2222 - IdentityFile:
~/.ssh/prod_rsa
Output:
Host prod
HostName prod.mycompany.com
User ubuntu
Port 2222
IdentityFile ~/.ssh/prod_rsa
AddKeysToAgent yes
IdentitiesOnly yesPaste it into ~/.ssh/config and enjoy instant access.
Step 9: Generate PPK for PuTTY
If you need PuTTY compatibility:
- Generate RSA keys
- Click Generate PPK
- Download the
.ppk
Now PuTTY can use your key without extra conversion steps.
Step 10: Validate a key
Paste a key into the validation section:
- If it is a public key, the tool detects the algorithm, comment, and fingerprints.
- If it is a private key, the tool validates PEM structure.
- If it is a GSSTK encrypted key, the tool allows decryption with a passphrase.
This is extremely useful in audits or debugging broken SSH access.
Step 11: Verify a key pair
Paste a public key and its private key. The tool derives the public key and confirms if they match.
This reduces the risk of deploying mismatched keys (a common and costly error).
Practical examples you can copy today
Example A: Create a CI key for GitHub
- Select Ed25519
- Comment:
ci@runner-01 - Generate
- Copy the public key into GitHub Deploy Keys
Benefits: fast handshakes, minimal key size, clean audit trail.
Example B: Legacy system with RSA
- Select RSA 4096
- Comment:
prod@legacy-server - Use PKCS8
- Generate and download
This ensures compatibility without sacrificing security.
Example C: Secure team handoff
- Enable encryption
- Use a long passphrase
- Download the bundle
Now your handoff includes:
- Encrypted private key
- Public key
- ssh_config
- known_hosts
- PPK (if needed)
Common mistakes (and how to avoid them)
-
Using RSA 2048 for long-lived keys
- Prefer RSA 3072 or 4096 when using RSA.
-
Sharing private keys in chat or tickets
- Use encrypted keys and secure transfer channels.
-
Ignoring known_hosts warnings
- Key changes can mean a real attack, not just a benign update.
-
Mismatched key pairs
- Use the tool's verification section to confirm.
-
No key rotation policy
- Create a cadence and track key owners via comments.
Security posture checklist
Use this checklist with your team:
- Keys use Ed25519 or RSA 3072+.
- Private keys are encrypted.
- Comments identify the key owner and purpose.
- known_hosts is curated and validated.
- ssh_config uses IdentityFile and IdentitiesOnly.
- Old keys are rotated and removed.
Why this tool is world-class
A tool is not world-class because it has a shiny UI. It becomes world-class when it reduces risk, removes ambiguity, and speeds up the right workflows.
The gsstk SSH Key Generator does that by combining:
- Multi-algorithm generation
- Secure encryption
- Fingerprint validation
- known_hosts and ssh_config generation
- PPK conversion
- Pair verification
- ZIP bundling for real-world handoffs
This is not a toy generator. It is a complete SSH workflow toolkit.
Final thought
SSH is the hidden backbone of modern engineering. When you treat it as a first-class system, you eliminate security gaps and operational chaos.
If your team uses SSH every day (and it does), then having a world-class generator and workflow is not a luxury. It is a baseline.
Use this guide as your internal reference, share it with your team, and make SSH boring again.
If you want more deep dives like this, check the rest of the gsstk blog and explore the full tool suite.