SSH sleutels aanmaken en beheren
ssh-keygen -t ed25519
Ed25519 is het aanbevolen algoritme in OpenSSH 8.x en nieuwer. Het is sneller en veiliger dan RSA-2048 of RSA-3072. Het commando maakt twee bestanden aan: een privésleutel en een publieke sleutel.
2. Kies de opslaglocatie
`ssh-keygen` vraagt om een bestandspad. Druk op Enter om de standaardlocatie te accepteren:Enter file in which to save the key (/home/gebruiker/.ssh/id_ed25519):
De standaardlocatie is `~/.ssh/id_ed25519` voor de privésleutel en `~/.ssh/id_ed25519.pub` voor de publieke sleutel. De SSH-client zoekt automatisch op deze paden bij een verbinding. Wil je meerdere sleutels beheren, geef dan een eigen naam op, bijvoorbeeld `~/.ssh/id_ed25519_pixzo`.
3. Stel een passphrase in
Enter passphrase (empty for no passphrase):
Enter same passphrase again:Een passphrase versleutelt de privésleutel op schijf. Zonder passphrase kan iedereen met leestoegang tot het bestand de sleutel direct gebruiken. Zet altijd een passphrase op sleutels die op gedeelde of productiesystemen staan.
4. Controleer de gegenereerde bestanden
ls -la ~/.ssh/Je ziet nu twee bestanden: `id_ed25519` (privé) en `id_ed25519.pub` (publiek). De privésleutel moet alleen leesbaar zijn voor jouw gebruiker — check met `ls -l` dat de permissies `-rw-------` zijn. Staat er meer, corrigeer dan met:
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
5. Kopieer de publieke sleutel naar de server
ssh-copy-id -i ~/.ssh/id_ed25519.pub gebruiker@server.example.com`ssh-copy-id` plaatst de publieke sleutel in `~/.ssh/authorized_keys` op de server. Dit commando vraagt één keer naar het wachtwoord van de server-gebruiker. Werkt `ssh-copy-id` niet (bijvoorbeeld op een minimale Linux-installatie), kopieer de sleutel dan handmatig:
cat ~/.ssh/id_ed25519.pub | ssh gebruiker@server.example.com "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
6. Test de sleutel-authenticatie
ssh gebruiker@server.example.comAls de sleutel correct staat en de passphrase klopt, log je in zonder wachtwoord. Wordt er nog om een wachtwoord gevraagd, controleer dan stap 5 en de permissies op de server: `~/.ssh` moet `700` zijn en `authorized_keys` moet `600` zijn.
7. Voeg de sleutel toe aan ssh-agent (optioneel)
Voor dagelijks beheer wil je niet elke keer de passphrase intoetsen. Laad de sleutel in de SSH-agent:eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519De agent houdt de ontgrendelde sleutel in het geheugen. Bij een nieuwe terminal-sessie moet je `ssh-add` opnieuw uitvoeren. Gebruik `ssh-add -l` om te controleren welke sleutels geladen zijn.
8. Beveilig de privésleutel op de client
De privésleutel verlaat nooit de lokale machine. Zorg dat de map `~/.ssh` zelf ook goed beveiligd is:chmod 700 ~/.ssh
Op een laptop die kwijt kan raken, overweeg een versleutelde home-directory of full-disk encryption. Een privésleutel met passphrase is de laatste verdedigingslinie — zonder passphrase is een gestolen bestand direct bruikbaar.
Verificatie
Controleer of de sleutel werkt en of de server de juiste vingerafdruk toont:ssh -v gebruiker@server.example.com
In de debug-output zie je `Authenticated to server.example.com ([IP]:22)` en `Server accepts key`. Je kunt ook expliciet de publieke sleutel op de server controleren:
ssh gebruiker@server.example.com "cat ~/.ssh/authorized_keys"
De output moet exact overeenkomen met de inhoud van `~/.ssh/id_ed25519.pub` op je lokale machine.
Veelgestelde problemen
1. Permission denied (publickey) bij het verbinden
De server accepteert de sleutel niet. Controleer de permissies op de server: `~/.ssh` moet `700` zijn, `authorized_keys` moet `600` zijn. Controleer ook of je de juiste sleutel aanbiedt: `ssh -i ~/.ssh/id_ed25519 gebruiker@server`. Op sommige systemen staat `PubkeyAuthentication no` in `/etc/ssh/sshd_config` — zet dat op `yes` en herstart `sshd`.2. `ssh-keygen` bestaat niet op Windows
Windows 10 (build 1809 of nieuwer) en Windows 11 hebben OpenSSH ingebouwd. Open een PowerShell of Command Prompt en voer `ssh-keygen.exe` uit. Is het niet aanwezig, installeer dan de OpenSSH-client via Instellingen → Apps → Optionele functies → Een functie toevoegen → OpenSSH-client.3. PuTTY-sleutels werken niet met OpenSSH
PuTTYgen slaat privésleutels op in `.ppk`-formaat. OpenSSH gebruikt een eigen formaat. Converteer met:puttygen id_ed25519.ppk -O private-openssh -o id_ed25519
Heb je geen `puttygen` op Linux, installeer dan `putty-tools` (Debian/Ubuntu: `sudo apt install putty-tools`). De publieke sleutel kun je direct uit PuTTYgen kopiëren — die is compatibel met `authorized_keys`.
Het beheren van SSH-sleutels stopt niet bij het aanmaken. Sleutels verlopen niet, dus een gelekte sleutel blijft geldig tot je hem handmatig verwijdert uit `authorized_keys` op elke server waar hij ooit is geplaatst — en dat is precies waarom je het aantal sleutels klein houdt en per omgeving een aparte sleutel gebruikt.