Naar de inhoud
Actuele kortingscode:10% kortingGebruiken bij je bestelling

SSH-sleutel: inloggen zonder wachtwoord (ed25519, PuTTYgen)

Je maakt een ed25519 SSH-sleutel aan, zet hem op je VPS en schakelt inloggen met een wachtwoord veilig uit. Stappen voor Windows, macOS, Linux en PuTTY, inclusief ssh-agent en het bestand ~/.ssh/config.

  • beginner
  • ~15 min
  • Bijgewerkt op 1-10-2026

Je maakt een SSH-sleutel aan, zet hem op je VPS en logt voortaan in zonder wachtwoord. Tot slot schakel je inloggen met een wachtwoord uit, zodat wachtwoorden raden geen zin meer heeft. De stappen gelden voor Windows, macOS, Linux en PuTTY.

Wat je nodig hebt

  • Een VPS bij StormHost met Ubuntu 24.04 of Debian 13
  • Een werkende SSH-verbinding met een wachtwoord (handleiding)
  • Een computer met Windows 10/11, macOS of Linux
  • Ongeveer 15 minuten

Hoe een SSH-sleutel werkt#

Een SSH-sleutel bestaat uit twee bestanden die bij elkaar horen:

BestandVoorbeeldnaamWaar het staatAan wie je het geeft
Privésleutelid_ed25519 (PuTTY: .ppk)Alleen op je eigen computer.Aan niemand. Wie hem heeft, logt in als jij.
Publieke sleutelid_ed25519.pubOp de VPS in het bestand ~/.ssh/authorized_keys.Je mag hem overal neerzetten, misbruiken kan niet.

Bij het inloggen stuurt de VPS je computer een opgave die alleen de houder van de privésleutel kan oplossen. De privésleutel verlaat je computer daarbij nooit. Een sleutel van het type ed25519 is modern, kort en veilig, en alle huidige systemen ondersteunen hem.

Je kunt de privésleutel bovendien vergrendelen met een sleutelwachtwoord (passphrase). Als iemand het sleutelbestand kopieert, kan hij er zonder dat wachtwoord niets mee.

Een sleutel aanmaken#

Windows

  1. Open Terminal (klik met de rechtermuisknop op Start › Terminal, in Windows 10 Windows PowerShell).

  2. Voer uit:

    PowerShell
    ssh-keygen -t ed25519 -C "notebook-jan"
  3. Druk bij de vraag Enter file in which to save the key (C:\Users\jan/.ssh/id_ed25519): op Enter. De sleutel wordt opgeslagen op de standaardlocatie, waar SSH hem zelf vindt.

  4. Voer bij de vraag Enter passphrase een sleutelwachtwoord in en druk op Enter. Herhaal het bij Enter same passphrase again. Het wachtwoord wordt niet getoond. Laat je het leeg, dan is de sleutel niet vergrendeld.

Resultaat: de bestanden C:\Users\<USER>\.ssh\id_ed25519 (privé) en id_ed25519.pub (publiek).

macOS

  1. Open de app Terminal.

  2. Voer uit:

    bash
    ssh-keygen -t ed25519 -C "macbook-jan"
  3. Druk bij de vraag Enter file in which to save the key op Enter.

  4. Voer het sleutelwachtwoord (passphrase) in en herhaal het.

Resultaat: ~/.ssh/id_ed25519 en ~/.ssh/id_ed25519.pub.

Linux

  1. Open een terminal.

  2. Voer uit:

    bash
    ssh-keygen -t ed25519 -C "pc-jan"
  3. Druk bij de vraag Enter file in which to save the key op Enter.

  4. Voer het sleutelwachtwoord (passphrase) in en herhaal het.

Resultaat: ~/.ssh/id_ed25519 en ~/.ssh/id_ed25519.pub.

Wat het commando doet:

  • ssh-keygen – het programma waarmee je SSH-sleutels aanmaakt.
  • -t ed25519 – het sleuteltype. We raden Ed25519 aan. Gebruik het oudere type RSA alleen voor apparaten die ed25519 niet aankunnen, en dan met de lengte -t rsa -b 4096.
  • -C "notebook-jan" – een label (commentaar) aan het einde van de publieke sleutel. Daaraan zie je op de VPS van welke computer de sleutel is. Het label beveiligt niets, het is alleen ter oriëntatie.

Heb je al een sleutel?

Als ssh-keygen meldt … already exists. Overwrite (y/n)?, antwoord dan n. Door te overschrijven raak je de oude sleutel kwijt, en daarmee de toegang tot alles waar je hem gebruikt. Je kunt de oude sleutel gerust ook voor de VPS gebruiken.

Een sleutel aanmaken in PuTTYgen#

Maak je verbinding via PuTTY, maak de sleutel dan aan in het programma PuTTYgen, dat samen met PuTTY wordt geïnstalleerd.

  1. Start PuTTYgen.
  2. Kies bij Parameters het type EdDSA en daarnaast Ed25519 (255 bits).
  3. Klik op Generate en beweeg de muis over het lege vlak van het venster tot de voortgangsbalk vol is. De muisbeweging dient als bron van willekeur.
  4. Typ in het veld Key comment een label, bijvoorbeeld notebook-jan.
  5. Voer in de velden Key passphrase en Confirm passphrase een sleutelwachtwoord in.
  6. Klik op Save private key en sla het bestand op, bijvoorbeeld als C:\Users\<USER>\.ssh\vps.ppk. Dit is de privésleutel.
  7. Selecteer en kopieer de volledige tekst in het veld Public key for pasting into OpenSSH authorized_keys file. Die begint met ssh-ed25519 AAAA… en eindigt met het label. Dit is de publieke sleutel, die je handmatig op de VPS zet (zie het tabblad Handmatig hieronder).

De knop Save public key slaat de publieke sleutel op in een ander formaat, dat de VPS niet accepteert. Kopieer altijd de tekst uit het veld.

De publieke sleutel op de VPS zetten#

Windows

Windows heeft het commando ssh-copy-id niet. Dit commando in PowerShell doet hetzelfde werk (vervang 203.0.113.10 door het IP-adres van je VPS):

PowerShell
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh [email protected] "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
  • type $env:USERPROFILE\.ssh\id_ed25519.pub – toont de inhoud van de publieke sleutel ($env:USERPROFILE is jouw map C:\Users\<USER>).
  • | – geeft de uitvoer als invoer door aan het volgende commando.
  • ssh [email protected] "…" – maakt verbinding met de VPS (vraagt om het rootwachtwoord) en voert de commando's tussen aanhalingstekens uit.
  • mkdir -p ~/.ssh – maakt de map .ssh aan als die nog niet bestaat.
  • chmod 700 ~/.ssh – alleen de eigenaar mag de map openen. SSH weigert te ruime rechten.
  • cat >> ~/.ssh/authorized_keys – voegt de sleutel toe aan het einde van het bestand. Sleutels die er al staan, blijven staan.
  • chmod 600 ~/.ssh/authorized_keys – alleen de eigenaar mag het bestand lezen en wijzigen.

macOS

bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
  • ssh-copy-id – zet de publieke sleutel op de server en stelt de juiste rechten in.
  • -i ~/.ssh/id_ed25519.pub – welke sleutel je wilt overzetten.
  • [email protected] – de gebruiker en het adres van de VPS.

Het commando vraagt om het rootwachtwoord en toont aan het einde Number of key(s) added: 1.

Linux

bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
  • ssh-copy-id – zet de publieke sleutel op de server en stelt de juiste rechten in.
  • -i ~/.ssh/id_ed25519.pub – welke sleutel je wilt overzetten.

Het commando vraagt om het rootwachtwoord en toont aan het einde Number of key(s) added: 1.

Handmatig

Handig voor een sleutel uit PuTTYgen of als de vorige methoden bij jou niet werken.

  1. Maak met een wachtwoord verbinding met de VPS (PuTTY, een terminal of de console in de browser).

  2. Maak de map klaar en open het bestand met sleutels:

    bash
    mkdir -p ~/.ssh && chmod 700 ~/.ssh
    nano ~/.ssh/authorized_keys
  3. Plak de publieke sleutel op een eigen regel (in PuTTY met de rechtermuisknop). De hele sleutel moet op één regel staan: ssh-ed25519 AAAA… label.

  4. Sla op (Ctrl+O, Enter) en sluit de editor (Ctrl+X).

  5. Stel de rechten in:

    bash
    chmod 600 ~/.ssh/authorized_keys

Inloggen met de sleutel#

Een sleutel op de standaardlocatie (id_ed25519) vindt de SSH-client zelf, het gewone commando is genoeg:

bash
ssh [email protected]

Heb je de sleutel een wachtwoord gegeven, dan vraagt de client Enter passphrase for key. Je voert het wachtwoord van de sleutel in, niet het rootwachtwoord.

Een sleutel die ergens anders of onder een andere naam is opgeslagen, geef je op met de optie -i:

bash
ssh -i ~/.ssh/vps_klic [email protected]
  • -i ~/.ssh/vps_klic – het pad naar de privésleutel (het bestand zonder .pub).

PuTTY:

  1. Start PuTTY en laad de opgeslagen sessie (Load), of vul het IP-adres in.
  2. Open in de boom links Connection › SSH › Auth › Credentials.
  3. Klik bij het veld Private key file for authentication op Browse en kies het .ppk-bestand.
  4. Optioneel: vul onder Connection › Data bij Auto-login username root in.
  5. Ga terug naar Session, klik op de naam van de sessie en op Save, zodat je dit de volgende keer niet opnieuw hoeft in te stellen.
  6. Klik op Open.

Een sleutel uit ssh-keygen kun je ook in PuTTY gebruiken: klik in PuTTYgen op Load, kies het bestand id_ed25519 (zet het bestandsfilter op All Files) en sla het via Save private key op als .ppk. Andersom zet je een sleutel uit PuTTYgen om naar het OpenSSH-formaat via Conversions › Export OpenSSH key.

ssh-agent: het sleutelwachtwoord maar één keer#

ssh-agent onthoudt de ontgrendelde sleutel, zodat je het sleutelwachtwoord niet bij elke verbinding hoeft in te voeren.

Windows

Schakel in PowerShell, gestart als administrator, de service van de agent in (die staat standaard uit):

PowerShell
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
  • Set-Service -StartupType Automatic – de agent start voortaan mee met het systeem.
  • Start-Service ssh-agent – start de agent meteen.

Voeg daarna in een gewoon venster de sleutel toe (er wordt om het sleutelwachtwoord gevraagd):

PowerShell
ssh-add $env:USERPROFILE\.ssh\id_ed25519

macOS

bash
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
  • --apple-use-keychain – slaat het sleutelwachtwoord op in de Sleutelhanger van macOS.

Om SSH het wachtwoord uit de Sleutelhanger ook na een herstart van je Mac vanzelf te laten gebruiken, zet je dit aan het begin van het bestand ~/.ssh/config (zie het volgende onderdeel):

~/.ssh/configtext
Host *
    UseKeychain yes
    AddKeysToAgent yes
  • UseKeychain yes – het sleutelwachtwoord wordt uit de Sleutelhanger gelezen (alleen macOS).
  • AddKeysToAgent yes – de ontgrendelde sleutel wordt bij het eerste gebruik aan de agent toegevoegd.

Linux

De meeste desktopomgevingen starten de agent zelf. Je voegt de sleutel toe met het commando:

bash
ssh-add ~/.ssh/id_ed25519

Controle: ssh-add -l toont de vingerafdrukken van de sleutels die de agent heeft geladen.

Het bestand ~/.ssh/config: verbinden met één woord#

Sla de instellingen van je VPS op in het bestand config in de map .ssh (Windows: C:\Users\<USER>\.ssh\config, zonder extensie):

~/.ssh/configtext
Host mojevps
    HostName 203.0.113.10
    User root
    Port 22
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes
DirectiveWat het doet
Host mojevpsDe afkorting die je typt in plaats van het adres. Geldt voor de regels eronder.
HostNameHet echte IP-adres of domein van de VPS.
UserDe gebruiker waarmee je inlogt.
PortDe SSH-poort. Pas hem aan als je SSH naar een andere poort hebt verplaatst.
IdentityFileDe privésleutel voor deze VPS.
IdentitiesOnly yesAlleen de sleutel uit IdentityFile proberen, niet alle sleutels uit de agent. Zo voorkom je de fout Too many authentication failures.

Daarna maak je verbinding met het commando ssh mojevps. Ook scp en sftp gebruiken de afkorting.

Inloggen met een wachtwoord uitschakelen#

Zolang inloggen met een wachtwoord aanstaat, kunnen bots het blijven proberen. Na het uitschakelen accepteert de VPS alleen nog een sleutel.

Wat het uitschakelen van het wachtwoord in je klantaccount verandert

De tabbladen Bestanden en Databases loggen met een wachtwoord in op de VPS. Na het uitschakelen van het wachtwoord werken ze niet meer. Zet bestanden dan over met een SFTP-client met sleutel (WinSCP en FileZilla kunnen allebei met een sleutel overweg) en beheer de database via een SSH-tunnel. De console in de browser blijft werken. Een overzicht van alle gevolgen staat in de handleiding Een nieuwe VPS beveiligen.

Controleer eerst of inloggen met de sleutel werkt

Als je het wachtwoord uitschakelt en de sleutel werkt niet, kom je er via SSH niet meer in. Open voordat je verdergaat een nieuw venster en log in met de sleutel, zonder het rootwachtwoord in te voeren. Laat het oorspronkelijke venster de hele tijd open. Gaat er toch iets mis, log dan via de console in de browser in met het rootwachtwoord en verwijder het bestand uit stap 1.

  1. Maak een eigen configuratiebestand voor de SSH-server aan (of open het):

    bash
    nano /etc/ssh/sshd_config.d/00-zabezpeceni.conf
  2. Plak de instellingen:

    /etc/ssh/sshd_config.d/00-zabezpeceni.confini
    PasswordAuthentication no
    KbdInteractiveAuthentication no
    PubkeyAuthentication yes
    PermitRootLogin prohibit-password

    Staat in het bestand al PermitRootLogin no (uit de handleiding Een nieuwe VPS beveiligen), laat de laatste regel dan weg.

    InstellingWat het doetAanbevolen waardeWanneer wijzigen
    PasswordAuthenticationStaat inloggen met een wachtwoord toe.noNooit, als je het wachtwoord uitgeschakeld wilt houden.
    KbdInteractiveAuthenticationEen andere manier om een wachtwoord in te voeren (een interactieve prompt). Ook met PasswordAuthentication uitgeschakeld zou je hierlangs een wachtwoord kunnen invoeren.noyes alleen voor tweestapsverificatie via PAM (gevorderd).
    PubkeyAuthenticationStaat inloggen met een sleutel toe. De standaardwaarde is yes, we noemen hem voor de zekerheid.yesNooit.
    PermitRootLoginInloggen als root. prohibit-password = root alleen met een sleutel.prohibit-passwordno, als je onder een eigen gebruiker met sudo werkt.
  3. Sla op en sluit de editor.

  4. Controleer of precies jouw waarden gelden:

    bash
    sshd -t && sshd -T | grep -Ei "^(passwordauthentication|kbdinteractiveauthentication|pubkeyauthentication|permitrootlogin)"
    • sshd -t – controleert de syntaxis van de configuratie. Bij een fout toont het het bestand en de regel, en het volgende commando wordt niet uitgevoerd.
    • sshd -T – toont de uiteindelijke geldende configuratie na het inlezen van alle bestanden.
    • grep -Ei "…" – selecteert alleen de vier instellingen waar het om gaat.

    De uitvoer moet deze vier regels bevatten (de volgorde kan afwijken):

    Uitvoertext
    permitrootlogin without-password
    pubkeyauthentication yes
    passwordauthentication no
    kbdinteractiveauthentication no

    without-password is de oudere naam voor prohibit-password en betekent hetzelfde. Ubuntu 24.04 en Debian 13 tonen de oudere naam, nieuwere versies van OpenSSH tonen prohibit-password. Heb je no ingesteld, dan zie je permitrootlogin no.

    Toont een regel een andere waarde (meestal passwordauthentication yes), dan staat dezelfde instelling in een bestand dat eerder wordt ingelezen. Je vindt het met het commando grep -rni "passwordauthentication" /etc/ssh/sshd_config.d/. Zet de regel daarin uit met het teken # aan het begin en herhaal de controle.

  5. Herstart de SSH-server:

    bash
    systemctl restart ssh

    De huidige verbinding blijft open.

  6. Probeer in een nieuw venster inloggen met een wachtwoord af te dwingen:

    bash
    ssh -o PubkeyAuthentication=no [email protected]

    De server moet antwoorden met Permission denied (publickey). Dat klopt: hij accepteert geen wachtwoord meer.

  7. Log in nog een venster gewoon in met de sleutel (ssh [email protected]). Sluit het oorspronkelijke venster pas als dat werkt.

Waarom het bestand 00-⁠zabezpeceni.conf

De SSH-server leest eerst de bestanden uit de map /etc/ssh/sshd_config.d/ (op alfabetische volgorde) en daarna het hoofdbestand /etc/ssh/sshd_config. Voor elke instelling geldt de eerste waarde die wordt gevonden. Op de VPS kan een bestand staan als 50-cloud-init.conf met PasswordAuthentication yes. Dankzij het getal 00 wordt jouw bestand eerder ingelezen en winnen jouw waarden. De controle met sshd -T bevestigt dat altijd.

Meerdere computers, een sleutel verwijderen en back-uppen#

  • Nog een computer: maak daarop een eigen sleutel aan met een ander label en zet hem op dezelfde manier over. Elke sleutel staat in ~/.ssh/authorized_keys op een eigen regel. We raden af om één privésleutel tussen computers te kopiëren.
  • Een sleutel verwijderen (verloren laptop, vertrek van een collega): open nano ~/.ssh/authorized_keys en verwijder de regel met zijn label. Dat geldt direct.
  • Back-up: bewaar de privésleutel in een wachtwoordmanager of op versleutelde opslag. Raak je hem kwijt terwijl het wachtwoord is uitgeschakeld, log dan in via de console in de browser en zet een nieuwe publieke sleutel op de VPS.
  • Een andere gebruiker dan root: de sleutel hoort in /home/<USER>/.ssh/authorized_keys en die gebruiker moet eigenaar van het bestand zijn.

Controle#

  • ssh root@<VPS_IP_ADDRESS> logt je in zonder rootwachtwoord (hooguit wordt om het sleutelwachtwoord gevraagd).
  • ssh -o PubkeyAuthentication=no root@<VPS_IP_ADDRESS> eindigt met Permission denied (publickey).
  • sshd -T toont passwordauthentication no.

Als iets niet werkt#

De VPS blijft om het rootwachtwoord vragen#

De sleutel is niet gebruikt. Maak verbinding met uitgebreide uitvoer:

bash
ssh -v [email protected]
  • -v – uitgebreide uitvoer. Zoek naar de regels Offering public key (de client heeft de sleutel aangeboden) en Server accepts key (de server heeft hem geaccepteerd).

Biedt de client de sleutel niet aan, dan staat hij in een ander bestand: gebruik -i of IdentityFile. Accepteert de server hem niet, controleer dan de rechten op de VPS:

bash
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
journalctl -u ssh -n 30
  • journalctl -u ssh -n 30 – de laatste 30 logregels van de SSH-server. De melding Authentication refused: bad ownership or modes betekent verkeerde rechten of een verkeerde eigenaar van de map .ssh.

Controleer ook of de sleutel in authorized_keys op één regel staat en begint met ssh-ed25519.

Permission denied (publickey).#

Het wachtwoord is uitgeschakeld en de server heeft de sleutel niet geaccepteerd. Ga te werk zoals in het vorige punt. Kom je er helemaal niet meer in, gebruik dan de console in de browser.

Windows: WARNING: UNPROTECTED PRIVATE KEY FILE! of Bad permissions#

Ook andere gebruikers van de computer hebben toegang tot de privésleutel (meestal na kopiëren vanaf een andere plek) en de client weigert hem te gebruiken. Stel de rechten in PowerShell in:

PowerShell
icacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r
icacls $env:USERPROFILE\.ssh\id_ed25519 /grant:r "$($env:USERNAME):(R)"
  • /inheritance:r – verwijdert de rechten die van de map zijn overgeërfd.
  • /grant:r "<USER>:(R)" – geeft alleen jouw account leesrecht.

Op macOS en Linux los je dezelfde fout op met het commando chmod 600 ~/.ssh/id_ed25519.

Load key "…": invalid format#

Je probeert in OpenSSH een sleutel in PuTTY-formaat (.ppk) te gebruiken. Zet hem in PuTTYgen om via Conversions › Export OpenSSH key.

PuTTY: Server refused our key#

Op de VPS staat niet de juiste publieke sleutel. Kopieer opnieuw de tekst uit het veld Public key for pasting into OpenSSH authorized_keys file (niet het bestand van Save public key) en plak hem op één regel in ~/.ssh/authorized_keys.

Too many authentication failures#

De agent biedt te veel sleutels aan. Gebruik IdentitiesOnly yes in ~/.ssh/config, of de opties -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes.

Samenvatting

  • De privésleutel blijft alleen op je computer, de publieke sleutel hoort in ~/.ssh/authorized_keys op de VPS.
  • Je maakt de sleutel aan met het commando ssh-keygen -t ed25519 -C "label" of in PuTTYgen (EdDSA, Ed25519).
  • Overzetten: ssh-copy-id (macOS, Linux), in Windows type … | ssh …, of handmatig.
  • Je schakelt het wachtwoord uit met het bestand /etc/ssh/sshd_config.d/00-zabezpeceni.conf en controleert het resultaat met het commando sshd -T.
  • Test het inloggen met de sleutel altijd in een nieuw venster voordat je het oorspronkelijke venster sluit.
  • Met het wachtwoord uitgeschakeld werken ook de tabbladen Bestanden en Databases niet meer; de console blijft werken.

Zoeken in de handleidingen