Hulpartikel overzicht

Hulpartikel

Hoe genereer en gebruik ik SSH-keys?

Om te verbinden met een Linux-server via SSH, kun je gebruik maken van SSH-keys, ook bekend als SSH key-pair. Verbinden met SSH-keys is een zeer veilige manier om te verbinden met een VPS. Voor meer algemene informatie over SSH-keys, zie ons artikel 'Wat zijn SSH-keys?'

In dit artikel laten wij zien hoe je SSH-keys genereert en ze vervolgens gebruikt.


Een SSH-key genereren en gebruiken in Windows 10

 

In Windows 10 heb je twee opties tot je beschikking om een SSH-key te genereren: het Windows Subsystem for Linux (WSL) en Putty-gen. Welke optie je gebruikt hangt ervan af hoe je SSH gebruikt: WSL of Putty.

  • WSL stelt je in staat om de command-line variant van een Linux-distro zoals Ubuntu lokaal op je Windows 10 computer/laptop te gebruiken. Je kunt vervolgens via command-line verbinden met een remote Linux-server.
  • Met Putty kun je remote verbinden via SSH met een Linux-VPS. Voor meer informatie over Putty, zie onze handleiding 'wat is command-line / SSH?'

De ervaring is bij beide bijna hetzelfde als via de command-line van een Linux-distro werken.


SSH-keys genereren in WSL

Heb je nog geen Windows Subsystem for Linux op je Windows 10 computer of laptop geïnstalleerd? Doorloop dan eerst deze installatiehandleiding van Microsoft en installeer bijvoorbeeld Ubuntu 18.04 (20.04 is op moment van schrijven nog niet beschikbaar voor WSL).

 

Stap 1

Start de Windows Subsystem for Linux (Windows Start-knop > zoek op de naam van de geïnstalleerde distro, bijvoorbeeld 'Ubuntu').

windows start search ubuntu


 

Stap 2

Genereer een public- en private-key met het ssh-keygen commando:

ssh-keygen -t ed25519
Toelichting commando

De bestanden worden standaard in de ~/.ssh directory geplaatst (voor ~ wordt automatisch de home-directory van de huidige gebruiker gebruikt, bijvoorbeeld /home/transip/).

Als er al bestanden bestaan in de ~/.ssh directory worden die overschreven.

ssh-keygen maakt een SSH key-pair aan.

-t ed25519 geeft aan dat ed25519-encryptie gebruikt moet worden. Dit is momenteel de meest veilige optie.

Optioneel: Met de syntax -i /voorbeeld/directory/id_ed25519 kun je een andere directory opgeven waar de keys geplaatst worden. Let wel dat je dan ook met het ssh-commando deze toevoeging gebruikt om de locatie van je key op te geven.

Optioneel: Je kunt de directory waar je keys in worden opgeslagen aanpassen met de syntax -f /andere/map/id_ed25519 Pas /andere/map/ aan naar de gewenste locatie, maar verander niet de bestandsnaam id_ed25519).

Tijdens het genereren van de SSH key-pair krijg je output te zien die er ongeveer als volgt uitziet:

Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/transip/.ssh/id_ed25519.
Your public key has been saved in /home/transip/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:1xCxkwjQLjz9CsL98GoTVmdmxO40zQqa5uxlE18zGcs transip@LAPTOP-DHLQLNU
The key's randomart image is:
+--[ED25519 256]--+
|                 |
|.                |
|o     o .        |
| + . = *         |
|o + + B S        |
|.o o X oo        |
| oX=B Oo..       |
|+.E+.+.*..       |
|+*+o++o +o.      |
+----[SHA256]-----+
Toelichting output
  • Enter passphrase (empty for no passphrase): Hiermee geef je een wachtwoord op voor je private key. Zonder dit wachtwoord kan de private key niet geopend worden. We raden om veiligheidsredenen aan een passphrase in te stellen.
     
  • Your identification has been saved in ...: Het bestand waar je private key in is opgenomen.
     
  • Your public key has been saved in ...: Het bestand waar je public key in is opgenomen.
     
  • The key fingerprint is: een verkorte versie van de public key. Hiermee kan snel gecontroleerd worden of een server een public key heeft die matched met jouw key.
     
  • The key's randomart image is: een randomart image kan gebruikt worden zodat mensen sneller kunnen zien of een public key op een remote server overeenkomt met je gegenereerde key; het is eenvoudiger verschillen in een afbeelding te zien dan in een lange reeks tekst.

Je key-pair is nu gegenereerd. Om er gebruik van te kunnen maken, kopieer je de public key naar de server waar je via SSH mee wil verbinden. Deze procedure leggen we in deze paragraaf uit en werkt hetzelfde voor WSL, MacOS en Linux.


Een SSH-key genereren en gebruiken met Putty

 

Putty komt automatisch met een programma genaamd Puttygen. Hiermee kun je via de onderstaande stappen SSH-keys genereren en gebruiken om met je VPS te verbinden.

 

Stap 1

Klik op de Windows Start-knop en zoek op 'Puttygen'.

windows start puttygen


 

Stap 2

 

Je kunt verschillende type keys genereren en bent vrij het aantal bits aan te passen. We raden om veiligheidsredenen aan een ed25519-key te genereren met een bit-lengte van 4096.

Klik op 'Generate' wanneer je dit hebt ingesteld en beweeg daarna je muis over het grijze vak zoals aangegeven onder 'Key' in het voorbeeld hieronder.

puttygen generate key


 

Stap 3

Wanneer de keys gegenereerd zijn, krijg je je public key plus enkele aanvullende opties te zien zoals in het voorbeeld hieronder.

  • Stel een passphrase in: een passphrase versleuteld je private key en beveiligd die met een wachtwoord.
    Stel dat een hacker je private key weet te bemachtigen, dan zal die zonder de passphrase daar niets mee kunnen. 
     
  • Sla de private-key op via 'Save private key'.
     
  • Kopieer de public key (selecteer ssh-ed25519 door met de muis te klikken en sleepen en met ctrl + c te kopieëren), plak deze bijvoorbeeld in Notepad (ctrl + v) en sla het bestand op met de naam id_ed25519.pub.
    De reden hiervoor is dat de optie 'Save public key' een iets ander formaat hanteert dat niet direct werkt wanneer je die gebruikt om jezelf te authenticeren.

puttygen-public-key

Sluit tot slot Puttygen af en open Putty.


 

Stap 4

Geef in Putty de Host Name of het IP-adres van je VPS op en je gebruikte SSH-poort (of laad een opgeslagen sessie) en klik daarna op 'Connection' > 'SSH' > 'Auth'.

putty host name connection


 

Stap 5

Klik op 'Browse' en selecteer je private key in de map waar je die in stap 3 hebt opgeslagen.

putty private key

Optioneel - username

Om automatisch je gebruikersnaam in te vullen, klik je in Putty op 'Data' onder 'Connection' en geef je onder 'Auto-login username' de gebruikersnaam van je VPS op.

putty auto login username

Optioneel - Sessie opslaan

Klik op 'Session' > geef je sessie een naam onder 'Saved Sessions > klik op 'Save' om de instellingen op te slaan. Je hoeft dan in het vervolg alleen nog de opgeslagen sessie te selecteren en op 'Load' te klikken om direct te verbinden met je VPS.

putty save session


 

Je hebt nu een private key aangemaakt met Puttygen en deze aan een sessie gekoppeld in Putty. Om er gebruik van te maken, moet de public key aan je VPS toegevoegd worden. Volg hiervoor de stappen onder 'Een public-key rechstreeks toevoegen op een VPS'.


Een SSH key genereren in MacOS / Linux

 

Stap 1

Start een terminal.


 

Stap 2

Genereer een public- en private-key met het ssh-keygen commando:

ssh-keygen -t ed25519
Toelichting commando

De bestanden worden standaard in de ~/.ssh directory geplaatst (voor ~ wordt automatisch de home-directory van de huidige gebruiker gebruikt, bijvoorbeeld /home/transip/).

Als er al bestanden bestaan in de ~/.ssh directory worden die overschreven.

ssh-keygen maakt een SSH key-pair aan.

-t ed25519 geeft aan dat ed25519-encryptie gebruikt moet worden. Dit is momenteel de meest veilige optie.

Optioneel: Met de syntax -i /voorbeeld/directory/id_ed25519 kun je een andere directory opgeven waar de keys geplaatst worden. Let wel dat je dan ook met het ssh-commando deze toevoeging gebruikt om de locatie van je key op te geven.

Optioneel: Je kunt de directory waar je keys in worden opgeslagen aanpassen met de syntax -f /andere/map/id_ed25519. Pas /andere/map/ aan naar de gewenste locatie, maar verander niet de bestandsnaam id_ed25519).

Tijdens het genereren van de SSH key-pair krijg je output te zien die er ongeveer als volgt uitziet:

Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/transip/.ssh/id_ed25519.
Your public key has been saved in /home/transip/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:1xCxkwjQLjz9CsL98GoTVmdmxO40zQqa5uxlE18zGcs transip@LAPTOP-DHLQLNU
The key's randomart image is:
+--[ED25519 256]--+
|                 |
|.                |
|o     o .        |
| + . = *         |
|o + + B S        |
|.o o X oo        |
| oX=B Oo..       |
|+.E+.+.*..       |
|+*+o++o +o.      |
+----[SHA256]-----+
Toelichting output
  • Enter passphrase (empty for no passphrase): Hiermee geef je een wachtwoord op voor je private key. Zonder dit wachtwoord kan de private key niet geopend worden. We raden om veiligheidsredenen aan een passphrase in te stellen.
     
  • Your identification has been saved in ...: Het bestand waar je private key in is opgenomen.
     
  • Your public key has been saved in ...: Het bestand waar je public key in is opgenomen.
     
  • The key fingerprint is: een verkorte versie van de public key. Hiermee kan snel gecontroleerd worden of een server een public key heeft die matched met jouw key.
     
  • The key's randomart image is: een randomart image kan gebruikt worden zodat mensen sneller kunnen zien of een public key op een remote server overeenkomt met je gegenereerde key; het is eenvoudiger verschillen in een afbeelding te zien dan in een lange reeks tekst.

Je key-pair is nu gegenereerd. Om er gebruik van te kunnen maken, kopieer je de public key naar de server waar je via SSH mee wil verbinden. Deze procedure leggen we in de volgende paragraaf uit en werkt hetzelfde voor WSL, MacOS en Linux.


Een public SSH-key toevoegen aan je VPS

Na het genereren van een SSH key-pair, kopieer je je public key naar je VPS. Wanneer je daarna via SSH verbindt met je server, wordt automatisch gecontroleerd of de public key op je VPS hoort bij de private key op je computer. Zo ja, dan wordt de verbinding tot stand gebracht zonder dat een wachtwoord nodig is. Het toevoegen van de public-key werkt hetzelfde voor WSL, MacOS en Linux.

Er zijn twee opties om de public-key aan je VPS toe te voegen:

Een public-key toevoegen via ssh-copy-id

 

Stap 1

Als je op je Linux-server nog niet eerder een public-key hebt toegevoegd, bestaat het bestand en de map waar de public keys in worden opgeslagen doorgaans nog niet en moet je die handmatig aanmaken. Verbind in dat geval eerst met je server via SSH met het commando:

ssh user@123.123.123.123
  • Vervang user door de naam van het de gebruiker waarmee je via SSH wil verbinden. Deze gebruiker moet op je server bestaan.
  • Vervang 123.123.123.123 door het IP-adres van je VPS.
  • Gebruik optioneel de toevoeging -p 1234 (ssh -p 1234 user@123.123.123.123) om een andere SSH-poort op te geven. Meer informatie over het veranderen van je SSH-poort vind je hier.

 

Stap 2

Gebruik het volgende commando om de ~/.ssh map aan te maken als die nog niet bestaat, en daarin het bestand authorized_keys toe te voegen.

mkdir ~/.ssh && touch ~/.ssh/authorized_keys

De rechten tot de .ssh folder en het authorized_keys-bestand staan standaard verkeerd ingesteld wanneer je ze handmatig aanmaakt. De .ssh folder mag enkel lees-, schrijf- en uitvoer-rechten hebben en het authorized_keys-bestand lees- en schrijfrechten. Je kunt dit aanpassen via het volgende commando:

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

Sluit de SSH-verbinding naar je VPS met het commando:

exit

 

Stap 3

Kopieer de public key van je computer naar het authorized_keys-bestand op je VPS met het ssh-copy-id commando.

Vervang in het voorbeeld hieronder user door de gebruikersnaam van je VPS en 123.123.123.123 door het IP-adres van je VPS.

sudo ssh-copy-id user@123.123.123.123

Optioneel kun je een andere SSH-poort opgeven met de toevoeging -p 1234. Vervang in dat geval 1234 door je SSH-poortnummer.

De output zal er als volgt uit zien (type yes als om bevestiging wordt gevraagd):

ssh key added

Krijg je een foutmelding 'ERROR: no identities found'? Deze melding wordt doorgaans veroorzaakt doordat de locatie van het bestand id_rsa.pub niet ~/.ssh/id_rsa.pub is. ~ is hier de home directory van de gebruiker, bijvoorbeeld /home/transip/.ssh/id_rsa.pub. Deze melding kan bijvoorbeeld ontstaan je als de ene gebruiker de keys aanmaakt (bijv als root) en daarna probeert als een andere gebruiker (bijv je eigen naam) die key over te zetten.

Controleer dan dat je inderdaad je key genereert op de computer waar vandaan je wil verbinden, waar op die computer id_rsa.pub zich bevindt, en specificeer de locatie met de toevoeging -i. Enkele voorbeelden zijn:

sudo ssh-copy-id -i ~/.ssh/id_rsa.pub user@123.123.123.123
sudo ssh-copy-id -i /etc/keys/id_rsa.pub user@123.123.123.123
sudo ssh-copy-id -i /home/root/id_rsa.pub user@123.123.123.123 

 

Stap 4

Aan het eind van de output in stap 3 krijg je te zien hoe je gebruik maakt van je SSH-keys, namelijk met hetzelfde commando als in stap 1:

ssh user@123.123.123.123

Optioneel specificeer je opnieuw de SSH-poort met de toevoeging -p 1234. Vervang in dat geval 1234 door het SSH-poortnummer van je VPS.


 

Stap 5

SSH-keys hebben als hoofddoel het beveiligen van je SSH-verbinding. Als je SSH-keys gebruikt, is het verstandig om authenticatie via wachtwoorden (i.e. zonder SSH-key) niet langer toe te staan. Open hiervoor je SSH-configuratie:

sudo nano /etc/ssh/sshd_config

 

Stap 6

Pas de waarde van PasswordAuthentication aan naar 'No', oftewel:

PasswordAuthentication no

Sla de wijzigingen vervolgens op en sluit het bestand (ctrl + x > y > enter).


 

Stap 7

Herstart tot slot de SSH-server om de wijzigingen te verwerken:

sudo systemctl restart sshd

Een public-key rechtstreeks toevoegen op een VPS

 

Stap 1

Verbind met je server via SSH.

  • Om te verbinden via SSH met Putty, zie deze handleiding.
     
  • Voor WSL, MacOS en Linux (via een terminal) gebruik je het commando:
    ssh user@123.123.123.123
    • Vervang user door de naam van het de gebruiker waarmee je via SSH wil verbinden. Deze gebruiker moet op je server bestaan.
    • Vervang 123.123.123.123 door het IP-adres van je VPS.
    • Gebruik optioneel de toevoeging -p 1234 (ssh -p 1234 user@123.123.123.123) om een andere SSH-poort op te geven. Meer informatie over het veranderen van je SSH-poort vind je hier.

 

Stap 2

Als je op je Linux-server nog niet eerder een public-key hebt toegevoegd, bestaat het bestand waar de public keys in worden opgeslagen doorgaans nog niet.

Gebruik het volgende commando om de ~/.ssh map aan te maken als die nog niet bestaat, en daarin het bestand authorized_keys toe te voegen.

mkdir ~/.ssh/ && touch ~/.ssh/authorized_keys

 

Stap 3

Eerder in deze handleiding heb je op je computer/laptop een public key gegenereerd. Open de public key (het bestand dat je public key bevat heet standaard id_ed25519.pub) met een teksteditor en kopieer deze. In Windows kun je hiervoor notepad gebruiken, of in MacOS / Linux het programma 'Texteditor'.


 

Stap 4

Open het bestand authorized_keys, bijvoorbeeld met:

nano ~/.ssh/authorized_keys

 

Stap 5

Plak je public key uit stap 3 in het bestand door met de rechter muisknop te klikken. Het resultaat ziet er ongeveer als volgt uit:

ssh-ed25519 AAAAC3NzaC1lZBI1NTE5AAAAIT5Sem9ensPAP1BMO32bXcWtl1gt0ZedNz/cpcTr3R+D ed25519-key-20210217

Sla hierna de wijzigingen op en sluit het bestand (ctrl + x > y > enter).


 

Stap 6

De rechten tot de .ssh folder en het authorized_keys-bestand staan standaard verkeerd ingesteld. De .ssh folder mag enkel lees-, schrijf- en uitvoer-rechten hebben en het authorized_keys-bestand lees- en schrijfrechten. Je kunt dit aanpassen via het volgende commando:

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

 

Stap 7

SSH-keys hebben als hoofddoel het beveiligen van je SSH-verbinding. Als je SSH-keys gebruikt, is het verstandig om authenticatie via wachtwoorden (i.e. zonder SSH-key) niet langer toe te staan. Open hiervoor je SSH-configuratie:

sudo nano /etc/ssh/sshd_config

 

Stap 8

Pas de waarde van PasswordAuthentication aan naar 'No', oftewel:

PasswordAuthentication no

Sla de wijzigingen vervolgens op en sluit het bestand (ctrl + x > y > enter).


 

Stap 9

Herstart tot slot de SSH-server om de wijzigingen te verwerken:

sudo systemctl restart sshd

Een public-key gebruiken bij het bestellen van een VPS

 

Stap 1

Als je ingelogd bent in je TransIP-account, krijg je tijdens het bestelproces automatisch de SSH-installatie optie te zien. Heb je nog geen SSH-key toegevoegd in je TransIP-account? Ga dan direct naar stap 3.

ssh keys

Ben je niet ingelogd in je TransIP-account? Log dan eerst in, of klik op 'Kies een andere installatiemethode'.

fast installs wachtwoord

Klik vervolgens op 'Installeer via SSH-keys'.

vps fast installs kies methode


 

Stap 2

Heb je al eerder een SSH-key toegevoegd? Vink dan de gewenste key(s) aan en klik op 'Ga verder'. Het bestelproces loopt dan verder en na oplevering van je VPS, kun je direct verbinden met je VPS via SSH met gebruik van je SSH-key.

ssh keys


Stap 3

Geef de inhoud van je public key op en een beschrijving (bijvoorbeeld de naam van je computer) en klik op 'Key toevoegen'.

fast installs new ssh key


 

Daarmee zijn we aan het eind van deze handleiding gekomen. Mocht je aan de hand van dit artikel nog vragen hebben, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' onderaan deze pagina.

Wil je dit artikel met andere gebruikers bespreken? Laat dan vooral een bericht achter onder 'Reacties'.

 

Heb je ook een goed idee?

Stuur jouw idee in! Met genoeg stemmen komt jouw idee op onze wishlist!

Heeft dit artikel je geholpen?

Maak een account aan of log in om een beoordeling achter te laten.

Reacties

Maak een account aan of log in om een reactie te plaatsen.

0
scanything 11 november 2022 (#9089)

Wat mij betreft is deze text veel te lang, maak anders een onderverdeling per os.

0
Matthijs van Beek Admin 15 september 2021 (#6508)

@marvado,

Als bij een herinstallatie van je VPS het besturingssysteem gebruik maakt van ons fast installs systeem (bijv bij Ubuntu) dan kun je inderdaad tijdens die herinstallatie ervoor kiezen een SSH key toe te voegen.

0
marvado 14 september 2021 (#6505)

Je kunt de SSH key toevoegen aan een nieuw te bestellen VPS, ik wil hem ook graag automatisch kunnen activeren bij een nieuwe installatie van een bestaande VPS. Dus de VPS bestond al en ik heb een SSH key later toegevoegd aan het controle paneel. Kan dat?

1
Matthijs van Beek Admin 26 februari 2021 (#5418)

@rhinofly,

Goed punt! We hebben het artikel hierop aangepast.

@smart48, Je krijgt inderdaad direct sudo-rechten. Je maakt via deze optie namelijk geen andere gebruikers aan en zou zonder sudo-rechten ook niet veel aan die nieuwe gebruiker hebben.

0
rhinofly 4 november 2020 (#4960)

Dit artikel zou wel eens een update kunnen gebruiken ten aanzien van de gebruikte encryptie-methode. Zowel PuTTYgen als ssh-keygen ondersteunen ED25519.

0
smart48 26 juli 2020 (#4602)

Zou fijn zijn om te weten of de user die je met je ssh keys kan toevoegen ook direct sudo rechten krijgt.

Kom je er niet uit?

Ontvang persoonlijke hulp van onze supporters

Neem contact op