Een SSH-sleutel is een paar bestanden: een privésleutel die op je computer blijft en een publieke sleutel die je op de server zet. Maak er een aan met ssh-keygen -t ed25519, zet de publieke sleutel op de server, en je logt in zonder wachtwoord en met veel betere beveiliging.
Deze guide behandelt Linux, macOS en Windows, en daarna de details die het werken met sleutels prettig maken.
Waarom sleutels beter zijn dan wachtwoorden
Elke server op internet krijgt voortdurend pogingen om wachtwoorden te raden op poort 22. Een sterk wachtwoord vertraagt die pogingen; een sleutel houdt ze tegen, omdat er niets te raden valt. Sleutels maken ook automatisering mogelijk: scripts, deploytools en CI kunnen inloggen zonder een wachtwoord op te slaan.
1. Maak een sleutel aan
Linux en macOS
Open een terminal en voer uit:
ssh-keygen -t ed25519 -C "laptop-2026"
-t ed25519kiest het moderne sleuteltype.-Cvoegt een opmerking toe, zodat je de sleutel later herkent. Gebruik de naam van het apparaat, en geen e-mailadres als je privacy belangrijk vindt.
Accepteer het standaardpad (~/.ssh/id_ed25519) en stel een wachtwoordzin in. Je hebt nu:
~/.ssh/id_ed25519 # private key, never share
~/.ssh/id_ed25519.pub # public key, safe to share
Windows 10 en 11
Windows wordt geleverd met OpenSSH. Open PowerShell en voer hetzelfde commando uit:
ssh-keygen -t ed25519 -C "desktop-2026"
De bestanden komen in C:\Users\<you>\.ssh\ terecht. Gebruik je PuTTY, dan kun je de privésleutel importeren in PuTTYgen en opslaan als .ppk-bestand.
2. Bekijk je publieke sleutel
cat ~/.ssh/id_ed25519.pub
Het is één regel die begint met ssh-ed25519. Dit is het deel dat je naar servers en de console kopieert.
3. Zet de sleutel op een server
Optie A: bij het aanmaken van de server
De makkelijkste manier. Voeg in de Wolkra-console de publieke sleutel toe onder SSH keys en selecteer hem wanneer je een server aanmaakt. De sleutel wordt bij de eerste start in het root-account gezet en er wordt geen wachtwoord verstuurd. Zie verbinden met SSH.
Optie B: met ssh-copy-id
Bestaat de server al en kun je inloggen met een wachtwoord:
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected] # example address
Optie C: met de hand
Op Windows, of als ssh-copy-id niet beschikbaar is, plak je de sleutel in authorized_keys op de server:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo 'ssh-ed25519 AAAA... laptop-2026' >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
De rechten zijn belangrijk. Kunnen anderen schrijven naar ~/.ssh of authorized_keys, dan negeert OpenSSH het bestand.
4. Log in
Heb je meerdere sleutels, geef dan aan welke je wilt gebruiken:
ssh -i ~/.ssh/id_ed25519 [email protected]
5. Gebruik ssh-agent, zodat je de wachtwoordzin één keer typt
macOS
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
Voeg daarna dit toe aan ~/.ssh/config:
Host *
AddKeysToAgent yes
UseKeychain yes
Linux
De meeste desktops starten automatisch een agent. Anders:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Windows
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519
6. Schrijf een SSH-configbestand
Een configbestand maakt van lange commando's korte namen. Maak ~/.ssh/config aan:
Host web
HostName 203.0.113.10
User deploy
IdentityFile ~/.ssh/id_ed25519
Host db
HostName 10.0.0.5
User deploy
ProxyJump web
Nu maakt ssh web verbinding met de eerste server, en bereikt ssh db een server in een privénetwerk door via web te springen. Zo beheer je servers zonder publiek IP, bijvoorbeeld in een privénetwerk. (De adressen zijn voorbeelden.)
7. Kopieer bestanden met dezelfde sleutel
scp en rsync gebruiken dezelfde sleutels en configuratie:
scp backup.tar.gz web:/home/deploy/
rsync -avz ./site/ web:/var/www/site/
8. Schakel inloggen met wachtwoord uit op de server
Werkt inloggen met een sleutel, zet wachtwoorden dan uit, zodat de server alleen nog sleutels accepteert:
sudo tee /etc/ssh/sshd_config.d/10-keys-only.conf >/dev/null <<'EOF'
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
EOF
sudo sshd -t && sudo systemctl reload ssh
Houd een bestaande sessie open terwijl je een nieuwe test. Met prohibit-password kan root alleen met een sleutel inloggen; zet het op no zodra je vanuit een sudo-gebruiker werkt. Meer in een Ubuntu-server beveiligen.
9. Vervang en trek sleutels in
Goede gewoonten:
- Eén sleutel per apparaat. Raak je een laptop kwijt, dan verwijder je alleen die sleutel.
- Opmerkingen die iets zeggen.
laptop-2026vind je makkelijker terug danuser@host. - Controleer
authorized_keysaf en toe en verwijder sleutels die niemand gebruikt.
Om een sleutel in te trekken, verwijder je de regel uit ~/.ssh/authorized_keys op elke server. Om hem te vervangen, voeg je eerst de nieuwe sleutel toe, test je, en verwijder je daarna de oude.
10. Optioneel: hardwaresleutels
OpenSSH ondersteunt FIDO2-beveiligingssleutels. Met een compatibele sleutel aangesloten:
ssh-keygen -t ed25519-sk -C "yubikey"
De privésleutel kan niet van het apparaat worden gekopieerd, en elke login vraagt om een aanraking. Dit is de sterkste optie voor beheerdersaccounts.
11. Gebruik SSH-sleutels voor deploys en CI
Geautomatiseerde systemen horen je persoonlijke sleutel niet te gebruiken. Maak voor elk systeem een aparte sleutel zonder wachtwoordzin aan en beperk wat die op de server mag:
ssh-keygen -t ed25519 -f ~/.ssh/deploy_ci -N "" -C "ci-deploy"
Zet op de server opties vóór de sleutel in authorized_keys die hem beperken:
from="198.51.100.0/24",no-port-forwarding,no-agent-forwarding,no-pty ssh-ed25519 AAAA... ci-deploy
from=accepteert de sleutel alleen vanuit de opgegeven range (hier een voorbeeld).no-ptyen de forwarding-opties voorkomen interactief gebruik.command="..."kan één specifiek commando afdwingen, zoals een deployscript.
Bewaar de privésleutel in de secret store van je CI-systeem, nooit in de repository. Wordt het CI-systeem ooit gecompromitteerd, dan sluit je het af door één regel uit authorized_keys te verwijderen.
12. Controleer de hostsleutel van de server
De vraag naar de fingerprint bij de eerste verbinding beschermt je tegen verbinden met de verkeerde machine. Vergelijk hem bij belangrijke servers met de echte. Voer in de browserconsole van de server uit:
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
Komt hij overeen met wat je SSH-client liet zien, antwoord dan yes. De fingerprint wordt daarna opgeslagen in ~/.ssh/known_hosts en bij elke volgende verbinding gecontroleerd.
Problemen oplossen
| Melding | Gebruikelijke oorzaak |
|---|---|
Permission denied (publickey) |
Verkeerde gebruiker, verkeerde sleutel of verkeerde rechten op ~/.ssh |
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED |
De server is herbouwd of het IP is hergebruikt; verwijder de oude regel met ssh-keygen -R 203.0.113.10 |
| Toch om een wachtwoord gevraagd | De sleutel is niet aangeboden; probeer ssh -v om te zien welke sleutels worden geprobeerd |
Voer ssh -v user@host uit voor een gedetailleerd log van wat de client probeert. Ben je helemaal buitengesloten van een Wolkra-server, open dan de browserconsole vanuit het serveroverzicht of start op in rescue-modus.
Volgende stap: werk de eerste stappen op een nieuwe VPS door.
Veelgestelde vragen
Welk type SSH-sleutel moet ik gebruiken?
Gebruik Ed25519. Die is kort, snel en veilig, en elke actuele OpenSSH-versie ondersteunt hem. Gebruik RSA met 4096 bits alleen voor heel oude systemen.
Moet mijn SSH-sleutel een wachtwoordzin hebben?
Ja. De wachtwoordzin versleutelt de privésleutel op de schijf, zodat een gestolen laptop of back-up geen toegang tot je servers geeft. Met ssh-agent typ je hem één keer per sessie.
Kan ik dezelfde sleutel voor meerdere servers gebruiken?
Ja. Je publieke sleutel kan op veel servers staan. Veel mensen gebruiken één sleutel per apparaat in plaats van één per server, zodat je een kwijtgeraakt apparaat op één plek kunt intrekken.
Wat als ik mijn privésleutel kwijtraak?
Log op een andere manier in, bijvoorbeeld via de browserconsole, en verwijder de oude publieke sleutel uit ~/.ssh/authorized_keys. Voeg daarna een nieuwe sleutel toe.
Waar voeg ik een sleutel toe bij Wolkra?
Onder SSH keys in de console. Opgeslagen sleutels kun je selecteren bij het aanmaken van een server; ze worden bij de eerste start in het root-account gezet.