Direct naar de inhoud

Cookie-instellingen

Kies per soort welke cookies je toestaat. Je kunt je keuze altijd wijzigen via Cookie-instellingen onderaan elke pagina. Privacyverklaring

Noodzakelijk

Altijd aan

Nodig om in te loggen, je winkelwagen te bewaren en je keuzes te onthouden. Deze staan altijd aan.

Welke cookies?
  • weboke_sessie, weboke_klant, weboke_remember: je sessie en ingelogd blijven
  • weboke_basket: je winkelwagen
  • wkBtwIncl: prijzen met of zonder btw tonen
  • wok_cookies: je cookiekeuze, 12 maanden

Meet welke advertentie tot een bezoek of bestelling leidt, zodat we niet betalen voor advertenties die niets doen.

Welke cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), tot 90 dagen
  • OpenAI Ads, advertenties in ChatGPT
  • wok_aff: via welke partner je bij ons kwam (affiliateprogramma), 60 dagen

4,6

Land en taal

Elk land heeft zijn eigen site, met prijzen en btw van dat land.

Bekijken

Module 2 · 2.1

SSH-sleutels maken en gebruiken

Module 2: SSH en sleutels · Leestijd: 10 minuten

Leerdoel: Na deze les kun je een sleutelpaar maken, de publieke sleutel op je server zetten, inloggen zonder wachtwoord en je privésleutel zo bewaren dat een verloren laptop geen ramp wordt.

Kernbegrippen: sleutelpaar, publieke sleutel, privésleutel, ed25519, RSA, passphrase, ssh-agent, ssh-copy-id, authorized_keys, rechten 700 en 600, sleutel per apparaat, FIDO2-sleutel

Waarom sleutels beter zijn dan wachtwoorden

In les 1.3 logde je in met een wachtwoord. Dat werkt, maar een server op internet krijgt vanaf de eerste minuut bezoek van programma's die wachtwoorden raden. Kijk maar eens in het log van een verse server:

root@web1:~# journalctl -u ssh --since "1 hour ago" | grep -c "Failed password"
214

Honderden pogingen per uur is normaal. Een sterk wachtwoord houdt ze tegen, maar je hebt een zwakke plek gemaakt die je niet nodig hebt. Met een SSH-sleutel is raden zinloos: er is niets te raden dat in een woordenlijst staat.

Een sleutel bestaat uit twee delen die bij elkaar horen, een sleutelpaar:

  • De privésleutel blijft op je eigen computer. Wie dit bestand heeft (en de passphrase kent), kan inloggen. Deel hem met niemand, ook niet met je aanbieder of met een helpdesk.
  • De publieke sleutel geef je aan de server. Die mag iedereen zien: je kunt er niet mee inloggen, alleen mee controleren.

Bij het inloggen stuurt de server geen wachtwoord over de lijn. Je computer bewijst met een handtekening dat hij de privésleutel heeft, en de server controleert die handtekening met de publieke sleutel. Ook als iemand meekijkt op het netwerk, ziet hij niets wat hij later kan hergebruiken.

Een sleutel maken

Je maakt de sleutel op je eigen computer, niet op de server. Op Windows 10 en 11, macOS en Linux zit ssh-keygen er al in. Open PowerShell of Terminal:

anna@laptop:~$ ssh-keygen -t ed25519 -C "anna@laptop 2026"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/anna/.ssh/id_ed25519):
Enter passphrase for "/home/anna/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/anna/.ssh/id_ed25519
Your public key has been saved in /home/anna/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026

Wat gebeurt hier?

  • -t ed25519 kiest het type. Ed25519 is kort, snel en veilig, en sinds OpenSSH 9.5 ook het standaardtype als je niets opgeeft. Moet je een oud systeem bedienen dat ed25519 niet kent, neem dan RSA met minstens 3072 bits: ssh-keygen -t rsa -b 4096. Oudere typen als DSA zijn uit OpenSSH verwijderd; gebruik ze niet.
  • -C is alleen een opmerking. Zet er iets in waaraan je later ziet van welk apparaat de sleutel is. Dat helpt enorm als je een sleutel moet intrekken.
  • De passphrase versleutelt de privésleutel op je schijf. Wordt je laptop gestolen, dan heeft de dief een versleuteld bestand. Zonder passphrase heeft hij direct toegang tot al je servers.

Je hebt nu twee bestanden:

BestandWatDelen?
~/.ssh/id_ed25519PrivésleutelNooit
~/.ssh/id_ed25519.pubPublieke sleutel, één regel tekstJa, naar de server

Op Windows staan ze in C:\Users\anna\.ssh\. De publieke sleutel is één regel die begint met ssh-ed25519:

anna@laptop:~$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHk2... anna@laptop 2026

De publieke sleutel op de server zetten

De server zoekt publieke sleutels in het bestand ~/.ssh/authorized_keys van de gebruiker waarmee je inlogt. Elke regel is één sleutel. Er zijn drie manieren om je sleutel daar te krijgen:

1. Bij de installatie. De meeste aanbieders hebben bij het aanmaken of opnieuw installeren van een VPS een veld voor je publieke sleutel. Bij WebOké heet dat veld "SSH-sleutel" in het VPS-scherm; bij andere aanbieders werkt het vergelijkbaar. Dit is de beste manier: dan hoeft er nooit een wachtwoord aan te staan.

2. Met ssh-copy-id (macOS en Linux), terwijl wachtwoordlogin nog werkt:

anna@laptop:~$ ssh-copy-id anna@192.0.2.10
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed
anna@192.0.2.10's password:
Number of key(s) added: 1

3. Met de hand, bijvoorbeeld vanaf Windows of via de console van je aanbieder. Plak de regel uit je .pub-bestand in authorized_keys en zet de rechten goed:

anna@web1:~$ mkdir -p ~/.ssh
anna@web1:~$ nano ~/.ssh/authorized_keys
anna@web1:~$ chmod 700 ~/.ssh
anna@web1:~$ chmod 600 ~/.ssh/authorized_keys

Die rechten zijn geen detail. De SSH-server controleert ze (de instelling StrictModes staat standaard aan): als anderen in jouw .ssh-map of je thuismap mogen schrijven, negeert hij je sleutels. Je ziet dan gewoon weer een wachtwoordvraag, zonder duidelijke foutmelding. Hoe je rechten leest, leer je in les 3.1.

Test daarna in een nieuw venster:

anna@laptop:~$ ssh anna@192.0.2.10
Enter passphrase for key '/home/anna/.ssh/id_ed25519':
anna@web1:~$

De vraag komt nu van je eigen computer (de passphrase van je sleutel), niet meer van de server.

ssh-agent: één keer ontgrendelen

Elke keer een passphrase intikken is lastig. De ssh-agent houdt je ontgrendelde sleutel in het geheugen zolang je bent ingelogd op je computer:

anna@laptop:~$ ssh-add ~/.ssh/id_ed25519
Enter passphrase for /home/anna/.ssh/id_ed25519:
Identity added: /home/anna/.ssh/id_ed25519 (anna@laptop 2026)
anna@laptop:~$ ssh-add -l
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)

Op macOS koppelt de agent aan de sleutelhanger, op Windows is het de dienst "OpenSSH Authentication Agent" (eenmalig aanzetten in Services). Zo heb je het gemak van geen wachtwoord en toch een versleutelde sleutel op schijf.

Let op met agent forwarding (ssh -A): daarmee mag de server waarop je inlogt jouw agent gebruiken. Wie root is op die server, kan dan met jouw sleutel verder. Gebruik het alleen op servers die je volledig vertrouwt, of gebruik ProxyJump (les 2.3).

Eén sleutel per apparaat, en weten welke waar staan

Een veelgemaakte fout: één privésleutel kopiëren naar laptop, pc en telefoon. Raak je één apparaat kwijt, dan moet je overal de sleutel vervangen en alle apparaten opnieuw inrichten. Beter:

  • maak op elk apparaat een eigen sleutel, met een duidelijke opmerking (-C "anna@telefoon");
  • zet alle publieke sleutels in authorized_keys, één per regel;
  • ben je een apparaat kwijt, haal dan alleen die ene regel weg.

Bekijk regelmatig welke sleutels toegang hebben:

anna@web1:~$ ssh-keygen -lf ~/.ssh/authorized_keys
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)
256 SHA256:Zt5oP1yW8eQ3rK6sV0bN9mD2xA4cH7jL1uI5fG8tE3w anna@telefoon (ED25519)

Staat er een sleutel bij die je niet herkent, dan is dat een alarmsignaal (les 10.3). Inbrekers zetten graag hun eigen sleutel in authorized_keys om later terug te komen.

Een hardwaresleutel (FIDO2, zoals een YubiKey) kan ook. Met ssh-keygen -t ed25519-sk staat het geheime deel op de sleutel zelf en moet je hem aanraken bij elk gebruik. Een gestolen bestand is dan waardeloos. Dat is een mooie stap verder, maar niet nodig om te beginnen.

Je privésleutel kwijt?

Raak je je enige privésleutel kwijt en staat wachtwoordlogin uit, dan kom je via SSH niet meer binnen. Daarom:

  • zet altijd minstens twee sleutels op de server (bijvoorbeeld laptop en pc);
  • weet hoe de console van je aanbieder werkt (les 1.2). Daar log je in alsof je een toetsenbord aan de server hangt, en dat werkt ook zonder SSH. Bij WebOké heet dat Console in het VPS-scherm; andere aanbieders noemen het VNC-console, webconsole of noodconsole.

Op AlmaLinux en Rocky Linux

Alles in deze les werkt hetzelfde. Eén extra valkuil: met SELinux aan moet ~/.ssh het juiste beveiligingslabel hebben. Heb je de map met de hand gemaakt of gekopieerd en wordt je sleutel genegeerd, dan herstelt restorecon -Rv ~/.ssh dat.

Samenvatting

  • Een sleutelpaar bestaat uit een privésleutel (blijft bij jou) en een publieke sleutel (gaat naar de server, in ~/.ssh/authorized_keys).
  • Maak sleutels met ssh-keygen -t ed25519 op je eigen computer, met een passphrase; gebruik ssh-agent voor het gemak.
  • Rechten tellen: ~/.ssh op 700 en authorized_keys op 600, anders negeert de server je sleutel.
  • Eén sleutel per apparaat, met een duidelijke opmerking, zodat je er één kunt intrekken.
  • Zorg voor een tweede sleutel en ken de console van je aanbieder als noodingang.

Quiz

1. Welk bestand mag je aan je aanbieder of een collega geven zodat je toegang krijgt tot een server?



2. Je hebt je sleutel in authorized_keys gezet, maar de server vraagt nog steeds om een wachtwoord. Wat is een veelvoorkomende oorzaak?



3. Waarom zet je een passphrase op je privésleutel?



4. Je laptop is gestolen. Op de server staan drie sleutels: laptop, pc en telefoon, elk met een eigen opmerking. Wat doe je?



5. Wat is het risico van ssh -A (agent forwarding) naar een server die je niet vertrouwt?



Opdracht

Opdracht O2.1: Een sleutel maken en gebruiken. Maak op je eigen computer een ed25519-sleutel met een passphrase en een duidelijke opmerking, zet hem op je server (via het veld van je aanbieder, ssh-copy-id of met de hand), controleer de rechten en log in een nieuw venster in met de sleutel. Vul daarna de vingerafdruk van je sleutel in (uit ssh-keygen -lf ~/.ssh/id_ed25519.pub) en beantwoord de vragen over waar je privésleutel staat en wat je doet als je hem kwijtraakt. Het programma controleert alleen of de vingerafdruk de goede vorm heeft; de rest is zelf doen.

Opdracht O2.1: Een sleutel maken en gebruiken

Deze opdracht doe je zelf; niemand kijkt hem na. Vink af wat je gedaan hebt en markeer de opdracht als gedaan.




Je vinkjes en aantekeningen blijven alleen in deze browser; we sturen ze nergens heen. Ben je aangemeld, dan bewaren we in Mijn cursussen alleen dat je de opdracht gedaan hebt.

Verder lezen

De stappen in deze artikelen gelden voor het VPS-scherm en de panelen van WebOké; bij andere aanbieders werkt het vergelijkbaar.

Even geduld…

Stel je domeinen in

Regel per domein de nameservers, de koppeling aan je hosting en wie de eigenaar wordt.

Je domeinen laden…