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 -o -b 4096 -t rsa
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.

-o zorgt ervoor dat het nieuwe OpenSSH-format gebruikt wordt in plaats van het oude PEM-formaat. Het PEM-formaat is compatibel met meer apparaten, maar het OpenSSH-formaat is een stuk beter bestand tegen bruteforce-aanvallen.

-b 4096 zet de bit-lengte op 4096, wat veiliger is dan een kortere lengte zoals 1024.

-t rsa geeft aan dat RSA-encryptie gebruikt moet worden.

Optioneel: Met de syntax -i /voorbeeld/directory/id_rsa 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_rsa. Pas /andere/map/ aan naar de gewenste locatie, maar verander niet de bestandsnaam id_rsa).

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

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/transip/.ssh/id_rsa.
Your public key has been saved in /home/transip/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:1xCxkwjQLjz9CsL98GoTVmdmxO40zQqa5uxlE18zGcs transip@LAPTOP-DHLQLNU
The key's randomart image is:
+---[RSA 4096]----+
|    .o0. .o0     |
|     ..o. .o     |
|   . o.+o+.o.o   |
|    + * o..+.+o  |
| . o = .Soo.E.   |
|  o * . +. +.    |
|   o O .+O.      |
|    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 generen 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 RSA-key te generen 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-rsa 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_rsa.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 -o -b 4096 -t rsa
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.

-o zorgt ervoor dat het nieuwe OpenSSH-format gebruikt wordt in plaats van het oude PEM-formaat. Het PEM-formaat is compatibel met meer apparaten, maar het OpenSSH-formaat is een stuk beter bestand tegen bruteforce-aanvallen.

-b 4096 zet de bit-lengte op 4096, wat veiliger is dan een kortere lengte zoals 1024.

-t rsa geeft aan dat RSA-encryptie gebruikt moet worden.

Optioneel: Met de syntax -i /voorbeeld/directory/id_rsa 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_rsa. Pas /andere/map/ aan naar de gewenste locatie, maar verander niet de bestandsnaam id_rsa).

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

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/transip/.ssh/id_rsa.
Your public key has been saved in /home/transip/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:1xCxkwjQLjz9CsL98GoTVmdmxO40zQqa5uxlE18zGcs transip@LAPTOP-DHLQLNU
The key's randomart image is:
+---[RSA 4096]----+
|    .o0. .o0     |
|     ..o. .o     |
|   . o.+o+.o.o   |
|    + * o..+.+o  |
| . o = .Soo.E.   |
|  o * . +. +.    |
|   o O .+O.      |
|    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 generen 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

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


 

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_rsa.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-rsa AAAAB3NzaC1yc2EAAAADAQABABBCAQDG6ovzEAKwinqpM8V85ZH7ZO8VS/NuyHCMLdFMj0vipAam1Idzx
n64SJAF8cNdZFC+4DZZWee8YCuP5ObZadfhAC4ja2sminZ66jNf0Kzk2mfBnQiFaUhqDCVBOo1mUg8q7Iu+YcbPn0
3xXfBgWoq7ORedbszTs+6nXKO5ysxkIOt/1V8LMiSVGkNP3Q6suOCrsmna8TJmTUFfaU0Fc4hSUHG061UglW5KVlp
in0hZVY1Z/fSXU5i3OtuEc6U4GLZELNl4kNUkVg3grawdOzhHQyMJurhpEvb9rqe/phfUBdSFnJEEB6OlKNh0TIzd
BEch40EiUrsXJpN1E2uZyrb+XfOjM1ahQCi3xnqSE9zP4s27RMFWGERuU262Z9slObaefPHTvNX/Nrwi3xTBjaQ4W
MS0wQv0lUuijbSiOjjFs4lwirBl6yF7wvSqrDfto9+nhU3ieKh7WDqk/koI9iD86h1F0GVkrdzP4bChyQmoOp1RDZ
sK7RATLAVEelC1RNrrR+kf/voqUK8HhmqPbXawcu1wPPOCNgV5c9nKr3CBWO2isfjERZ5BRIJam06v2gFWsIs5dBc
DhaP3cssfQMscimG3ccHxghD9AwCdozTJwbuPzVBQKucATZD6LZRvETgiu+MNtK2IXs9NDitR5V17cD278wYPlcK/
ZtqN+W3+8w== voorbeeld@voorbeeld.nl

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


 

Stap 6

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 7

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 8

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'.

 

Probeer BladeVPS een maand gratis

Maak van jouw volgende website of applicatie een succes op BladeVPS PureSSD. Probeer direct of een self-managed VPS iets voor jou is; de eerste maand krijg je van ons :-)!

Start nu je gratis maand

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
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