Ga naar inhoud

SSH Sleutels Workflow -- macOS, Windows & Ubuntu

Deze handleiding legt uit hoe je SSH-sleutels maakt, beheert, activeert en verwijdert.\ We behandelen macOS, Windows (PowerShell/Git Bash) en Ubuntu Server.\ Alle voorbeelden gebruiken poort 22 expliciet, zodat je dit makkelijk kunt aanpassen als jouw server een andere poort gebruikt.


πŸ”Ή Sleutel zoeken

Beschrijving: Controleer of er al SSH-sleutels aanwezig zijn.\ Standaard worden sleutels opgeslagen in de map ~/.ssh/ (Linux/macOS) of %USERPROFILE%\.ssh\ (Windows).

  • ~ verwijst naar de home directory van de gebruiker.\ Voorbeeld: /home/jan op Linux of /Users/jan op macOS.\
  • %USERPROFILE% of $env:USERPROFILE verwijst naar de home directory op Windows.\ Voorbeeld: C:\Users\Jan.

macOS/Linux:

ls -al ~/.ssh/

Windows (PowerShell):

dir $env:USERPROFILE\.ssh

Voorbeeld output:

id_rsa
id_rsa.pub
id_ed25519
id_ed25519.pub
known_hosts

πŸ”Ή Sleutel maken

Beschrijving: Maak een nieuwe SSH-sleutel.\ Gebruik bij voorkeur een moderne sleutel zoals ed25519 (sneller en veiliger dan rsa).

Betekenis van de opties: - ssh-keygen β†’ het programma dat de sleutel maakt.\ - -t ed25519 β†’ geeft het type sleutel aan (ed25519, rsa, ecdsa, dsa).\ > ❌ Er bestaat geen ed25520, alleen ed25519.\ - -b 4096 β†’ (optioneel) aantal bits voor RSA-sleutels. Hoe meer bits, hoe sterker, maar ook trager. Niet van toepassing bij ed25519.\ - -C "jouw_email@example.com" β†’ voegt een commentaar toe aan de sleutel, vaak een e-mailadres of beschrijving zodat je later weet waarvoor de sleutel dient.

macOS/Linux:

ssh-keygen -t ed25519 -C "jouw_email@example.com"

Windows (PowerShell/Git Bash):

ssh-keygen.exe -t ed25519 -C "jouw_email@example.com"

Ubuntu Server (bijv. voor een interne sleutel):

ssh-keygen -t rsa -b 4096 -C "server_key"

Voorbeeld output:

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/jan/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Your identification has been saved in /home/jan/.ssh/id_ed25519.
Your public key has been saved in /home/jan/.ssh/id_ed25519.pub.

πŸ”Ή Meerdere sleutels beheren

Gebruik een ~/.ssh/config bestand om meerdere sleutels te koppelen aan verschillende servers.\ Je kunt hier ook poortnummers instellen als jouw server niet op 22 draait.

Betekenis van de velden: - Host β†’ een alias die jij kiest (kortenaam voor de server).\ - HostName β†’ het IP of de DNS van de server.\ - Port β†’ de poort waarop SSH draait (standaard 22).\ - User β†’ de gebruikersnaam waarmee je inlogt.\ - IdentityFile β†’ pad naar de private sleutel die hoort bij deze server.

Host server1
    HostName 192.168.1.50
    Port 22
    User jan
    IdentityFile ~/.ssh/id_ed25519

Host server2
    HostName 192.168.1.51
    Port 2222
    User piet
    IdentityFile ~/.ssh/id_rsa

πŸ”Ή Sleutel versturen naar server

Linux/macOS:

ssh-copy-id -p 22 -i ~/.ssh/id_ed25519.pub jan@192.168.1.50

Windows (PowerShell/Git Bash):

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh -p 22 jan@192.168.1.50 "cat >> ~/.ssh/authorized_keys"

ℹ️ Als de server poort 2222 gebruikt, vervang je -p 22 door -p 2222.


πŸ”Ή Verbinden met sleutel

ssh -p 22 jan@192.168.1.50

Betekenis van de opties: - ssh β†’ het programma dat verbinding maakt.\ - -p 22 β†’ gebruik poort 22 (kan aangepast worden).\ - jan@192.168.1.50 β†’ login als gebruiker jan op host 192.168.1.50.

Voorbeeld output (eerste keer aanmelden):

The authenticity of host '192.168.1.50 (192.168.1.50)' can't be established.
ED25519 key fingerprint is SHA256:a1b2c3d4e5f6g7h8i9j0klmnopqrstuv.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Na yes wordt de host toegevoegd aan ~/.ssh/known_hosts.


πŸ”Ή Bekende hosts beheren (known_hosts)

Beschrijving: known_hosts bevat servers die je eerder hebt vertrouwd.\ Als de sleutel van een server verandert (bijvoorbeeld door herinstallatie), krijg je een waarschuwing.

Host verwijderen (Linux/macOS):

ssh-keygen -R [192.168.1.50]:22

Host verwijderen (Windows PowerShell):

ssh-keygen.exe -R [192.168.1.50]:22

Handmatig bewerken:

nano ~/.ssh/known_hosts

πŸ”Ή Fout bij verkeerde sleutel (public key niet goed ingesteld)

Beschrijving: Als de sleutel ontbreekt of niet klopt, zie je meldingen als:

jan@192.168.1.50: Permission denied (publickey).

Of (indien wachtwoord login nog toegestaan is):

Permission denied, please try again.

Oplossing: controleer of de juiste sleutel in ~/.ssh/authorized_keys staat en of permissies correct zijn.


πŸ”Ή Sleutel activeren op de server

Beschrijving: Zorg dat de server de sleutel accepteert.

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

SSHD configuratie aanpassen (indien nodig):

sudo nano /etc/ssh/sshd_config

Controleer dat dit aanwezig is:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Port 22

Herstart SSH:

sudo systemctl restart ssh

πŸ”Ή Sleutel kopiΓ«ren naar andere gebruiker

sudo cp /home/jan/.ssh/authorized_keys /home/piet/.ssh/
sudo chown piet:piet /home/piet/.ssh/authorized_keys

πŸ”Ή Sleutel disablen

Beschrijving: Zet een sleutel tijdelijk uit door de regel in authorized_keys te commentariΓ«ren.

nano ~/.ssh/authorized_keys
# zet een # voor de sleutelregel

πŸ”Ή Sleutel verwijderen

Op de server:

nano ~/.ssh/authorized_keys
# verwijder de regel van de sleutel

Op macOS/Linux client:

rm ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub

Op Windows client:

del $env:USERPROFILE\.ssh\id_ed25519*

βœ… Samenvatting

  • Zoeken/maken sleutels op macOS, Windows of Ubuntu.\
  • Meerdere sleutels beheren met SSH-config (inclusief poorten).\
  • Versturen naar server via ssh-copy-id -p PORT.\
  • Activeren op server (rechten + sshd_config + poortinstelling).\
  • KopiΓ«ren naar andere gebruiker binnen dezelfde server.\
  • Disablen/verwijderen van server en clients.\
  • known_hosts beheren en foutmeldingen begrijpen.