Een SSH-sleutelpaar aanmaken
Kort antwoord
Voer ssh-keygen -t ed25519 uit om een sleutelpaar te genereren, en kopieer de publieke sleutel daarna naar het bestand ~/.ssh/authorized_keys op de server. Werkt ed25519 niet op het systeem? Gebruik dan ssh-keygen -t rsa -b 4096.
Een SSH-sleutelpaar bestaat uit een private sleutel, die op je eigen machine blijft en nooit wordt gedeeld, en een publieke sleutel, die je op de server plaatst. Inloggen met een sleutelpaar is zowel makkelijker als veiliger dan met een wachtwoord: er valt niets te kraken met brute force, en in combinatie met een passphrase op de private sleutel werkt het als een vorm van tweefactorauthenticatie.
Een sleutelpaar genereren
Voer ssh-keygen uit
Open op Linux, macOS of Windows (met de ingebouwde OpenSSH-client, of WSL) een terminal op je eigen machine en voer uit:
ssh-keygen -t ed25519Ed25519 is op dit moment het aanbevolen sleuteltype: het is snel, en de sleutels zijn kort en veilig bij een vaste lengte, dus je hoeft geen bitlengte te kiezen. Verbind je met een ouder systeem dat ed25519 niet ondersteunt? Genereer dan in plaats daarvan een RSA-sleutel met een lengte van 4096 bits:
ssh-keygen -t rsa -b 4096Accepteer de standaard bestandslocatie en stel een passphrase in wanneer daarom wordt gevraagd. De passphrase beveiligt de private sleutel zelf: je hebt hem nog steeds nodig elke keer dat je de sleutel gebruikt, tenzij je systeem hem opslaat in een agent.
De publieke sleutel toevoegen aan je server
Kopieer de sleutel met ssh-copy-id
Is ssh-copy-id beschikbaar op je machine? Dan is dit de simpelste manier om je publieke sleutel op de server te installeren:
ssh-copy-id user@your-server-ipOf voeg hem handmatig toe
Is ssh-copy-id niet beschikbaar? Maak dan zelf de map .ssh en het bestand authorized_keys aan op de server, en plak daarna de inhoud van je publieke sleutelbestand erin (het .pub-bestand, nooit de private sleutel):
mkdir -p ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
nano ~/.ssh/authorized_keysVoor Flexible VPS kun je een publieke sleutel ook toevoegen onder Flexible VPS → Settings in Portal, handmatig of geïmporteerd vanuit GitHub of GitLab, zodat hij al op de server staat zodra deze wordt aangemaakt.
SSH verder beveiligen zodra je sleutel werkt
Schakel wachtwoordauthenticatie en root-login uit
Bewerk /etc/ssh/sshd_config en stel in:
PasswordAuthentication no
PermitRootLogin noHerstart daarna de SSH-service:
sudo systemctl restart sshdTest voordat je de verbinding verbreekt
Open een nieuw terminalvenster en log in met de sleutel voordat je je bestaande sessie sluit:
ssh user@your-server-ipSluit de oorspronkelijke sessie pas zodra de nieuwe verbinding succesvol tot stand komt. Gaat er iets mis, dan kun je dit via de bestaande sessie oplossen zonder buitengesloten te raken.
Gebruik één sleutelpaar per persoon in plaats van één sleutel te delen binnen je team, zodat je de toegang van één persoon kunt intrekken zonder de rest te raken. Zie ook Je SSH-beveiliging verbeteren en De SSH-poort wijzigen voor verdere beveiligingsstappen.