Wolkra

Handleidingen

SSH-sleutels aanmaken en gebruiken

Zo maak je SSH-sleutels aan op Linux, macOS en Windows, zet je ze op een VPS, gebruik je ssh-agent en een configbestand en vervang je sleutels veilig. Heldere stappen, echte commando's.

Bijgewerkt 5 min. leestijd

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:

bash
ssh-keygen -t ed25519 -C "laptop-2026"
  • -t ed25519 kiest het moderne sleuteltype.
  • -C voegt 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:

text
~/.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:

powershell
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

bash
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:

bash
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:

bash
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:

bash
ssh -i ~/.ssh/id_ed25519 [email protected]

5. Gebruik ssh-agent, zodat je de wachtwoordzin één keer typt

macOS

bash
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

Voeg daarna dit toe aan ~/.ssh/config:

text
Host *
  AddKeysToAgent yes
  UseKeychain yes

Linux

De meeste desktops starten automatisch een agent. Anders:

bash
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Windows

powershell
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:

text
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:

bash
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:

bash
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-2026 vind je makkelijker terug dan user@host.
  • Controleer authorized_keys af 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:

bash
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:

bash
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:

text
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-pty en 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:

bash
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.

Start een server in Frankfurt

Maak een account aan, waardeer op en draai een server vanaf €3.49 per maand. Je betaalt alleen voor de uren die je gebruikt. Onbemeterde bandbreedte bij elk pakket.