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. Wenst u meerdere sleutels te 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/U ziet nu twee bestanden: `id_ed25519` (privé) en `id_ed25519.pub` (publiek). De privésleutel moet alleen leesbaar zijn voor uw gebruiker — controleer 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, logt u 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 wenst u niet elke keer de passphrase in te toetsen. 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 u `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 ziet u `Authenticated to server.example.com ([IP]:22)` en `Server accepts key`. U 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 uw 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 u 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
Hebt u geen `puttygen` op Linux, installeer dan `putty-tools` (Debian/Ubuntu: `sudo apt install putty-tools`). De publieke sleutel kunt u 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 u hem handmatig verwijdert uit `authorized_keys` op elke server waar hij ooit is geplaatst — en dat is precies waarom u het aantal sleutels klein houdt en per omgeving een aparte sleutel gebruikt.