Wat is een SSH-sleutel en hoe werkt die?

Auteur: Gepubliceerd

In het kort: Een SSH-sleutel bevestigt je identiteit wanneer je veilig verbinding maakt met een server of dienst, zoals een coderepository. In de praktijk gebruik je een paar: een publieke sleutel die je aan de dienst verstrekt en een privésleutel die op je apparaat blijft. Deze manier van inloggen kan het wachtwoord van je account vervangen, maar vereist dat je de privésleutel goed beschermt.

Hoe werkt inloggen met een SSH-sleutel?

SSH, voluit Secure Shell, is een protocol voor veilige communicatie met een andere computer via een netwerk. Het wordt onder meer gebruikt voor serverbeheer, bestandsoverdracht via SFTP en communicatie met Git-repository’s. Een SSH-verbinding is versleuteld, zowel wanneer je met een wachtwoord inlogt als met een sleutel. De sleutel verandert vooral de manier waarop je identiteit wordt bevestigd.

Een sleutelpaar bestaat uit twee wiskundig met elkaar verbonden onderdelen:

Tijdens het inloggen gebruikt het SSH-programma de privésleutel om gegevens over de verbinding te ondertekenen. De server controleert die handtekening met de opgeslagen publieke sleutel. De privésleutel zelf wordt niet naar de server verzonden. Bij een goed gekozen, modern algoritme is het praktisch onmogelijk om de privésleutel uit de publieke sleutel af te leiden.

Wanneer is een SSH-sleutel handig in plaats van een wachtwoord?

Als je een VPS beheert, een virtuele privéserver, kun je met een sleutel inloggen in plaats van het accountwachtwoord in te voeren. Bij het werken met Git kan de sleutel je identiteit bevestigen wanneer je wijzigingen ophaalt en verstuurt. Dat betekent echter niet dat je commits automatisch worden ondertekend: dat is een aparte functie die je moet configureren.

Een voorbeeld: twee mensen beheren een bedrijfswebsite. In plaats van één wachtwoord te delen, maakt ieder een eigen sleutelpaar aan. De beheerder voegt hun publieke sleutels toe aan de bijbehorende accounts. Wanneer één van hen stopt, kan diens sleutel worden verwijderd zonder de sleutel van de ander te vervangen. Met aparte systeemaccounts kun je bovendien gemakkelijker verschillende rechten toekennen.

Sleutels verkleinen het risico dat een wachtwoord wordt geraden via geautomatiseerde inlogpogingen. Ze beschermen echter niet tegen alles: als een aanvaller je apparaat of een onbeschermde privésleutel in handen krijgt, kan die toegang krijgen. Alleen een sleutel toevoegen schakelt het inloggen met een wachtwoord op de server ook niet uit.

Hoe maak je een SSH-sleutelpaar aan?

Open de terminal op een systeem waarop OpenSSH is geïnstalleerd. Controleer eerst de map .ssh in je thuismap, zodat je geen bestaande sleutels overschrijft. Met de volgende opdracht maak je een nieuw paar aan met het moderne algoritme Ed25519:

ssh-keygen -t ed25519 -C "laptop-werk"

De optie -C voegt een opmerking toe waarmee je de sleutel gemakkelijker herkent; ze verleent geen rechten. Het programma vraagt waar je de sleutel wilt opslaan en welke wachtwoordzin voor de sleutel, ook wel passphrase genoemd, je wilt gebruiken. Deze wachtwoordzin beschermt het bestand met de privésleutel en is niet het wachtwoord van je account op de server. Oudere of specifieke omgevingen kunnen een ander algoritme vereisen. Controleer daarom de eisen van de aanbieder.

Met de standaardnaam worden twee bestanden aangemaakt:

Het symbool ~ staat voor de thuismap van de gebruiker. Een publieke sleutel bestaat meestal uit één lange regel die begint met ssh-ed25519. Kopieer de volledige regel naar het veld voor SSH-sleutels in het beheerpaneel van de aanbieder. Op een server met OpenSSH voeg je de regel doorgaans toe aan het bestand ~/.ssh/authorized_keys van het juiste account, zonder bestaande vermeldingen te verwijderen. Ook de toegangsrechten voor de map en het bestand op de server moeten correct zijn ingesteld.

Test de verbinding nadat je de sleutel hebt toegevoegd:

ssh -i ~/.ssh/id_ed25519 gebruiker@serveradres

Vervang de gebruikersnaam en het adres door je eigen gegevens. Als je de toegangsconfiguratie wijzigt, laat je de bestaande sessie open totdat je in een tweede venster met succes bent ingelogd.

Gebruikerssleutel en serversleutel

Bij de eerste SSH-verbinding kan de vingerafdruk van de serversleutel worden getoond: een verkorte identificatie van die sleutel. Dit is niet je gebruikerssleutel. De serversleutel dient om te bevestigen dat je verbinding maakt met de juiste machine. Vergelijk de vingerafdruk met informatie die je via een onafhankelijk, vertrouwd kanaal hebt gekregen, bijvoorbeeld van de beheerder of via het beheerpaneel van de aanbieder.

Negeer waarschuwingen over een gewijzigde serversleutel niet. De oorzaak kan een legitieme herinstallatie zijn, maar ook iemand die zich als de server voordoet. Zoek eerst uit waarom de sleutel is veranderd, in plaats van zonder controle de vermelding te verwijderen uit het bestand known_hosts, waarin de SSH-client bekende servers bijhoudt.

Hoe bewaar je een sleutel veilig en trek je die in?

Bescherm de privésleutel met een sterke wachtwoordzin en plaats hem niet in een repository, bericht of supportverzoek. Een SSH-agent is een programma dat een ontgrendelde sleutel in het geheugen kan bewaren en gebruiken om gegevens te ondertekenen. Daardoor hoef je de wachtwoordzin minder vaak opnieuw in te voeren.

Met aparte sleutels voor verschillende apparaten kun je de toegang gemakkelijker intrekken als je een apparaat verliest. Als je vermoedt dat een privésleutel is uitgelekt, verwijder je de bijbehorende publieke sleutel van alle servers en diensten die deze accepteren. Genereer daarna een nieuw sleutelpaar. Het wijzigen van de wachtwoordzin van het lokale bestand maakt een gestolen kopie niet ongeldig.

Controleer voordat je een nieuwe sleutel gaat gebruiken in het beheerpaneel van de dienst hoe je die kunt verwijderen en hoe je de toegang kunt herstellen als je je apparaat verliest. Zo voorkom je dat een defecte laptop je enige mogelijkheid om de server te beheren wegneemt.

Zie ook: Wat betekent www?

Lees ook

Lees hoe PHP-FPM PHP-verzoeken verwerkt, verschilt van een webserver en hoe je processen afstemt op verkeer en hostingcapaciteit.
Ontdek hoe BIND als open DNS-serversoftware domeinen beheert, welke rollen het vervult en wanneer zelf beheren zinvol is.
Lees wat het Poolse REGON-register en -nummer betekenen, hoe ze verschillen van NIP en KRS en hoe je bedrijfsgegevens controleert.