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 of 11
In Windows 10 en 11 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 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 22.04.
Stap 1
Start de Windows Subsystem for Linux (Windows Start-knop > zoek op de naam van de geïnstalleerde distro, bijvoorbeeld 'Ubuntu').
Stap 2
Genereer een public- en private-key met het ssh-keygen commando:
ssh-keygen -t 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]-----+
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'.
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.
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.
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'.
Stap 5
Klik op 'Browse' en selecteer je private key in de map waar je die in stap 3 hebt opgeslagen.
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.
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.
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
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]-----+
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):
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.
Ben je niet ingelogd in je TransIP-account? Log dan eerst in, of klik op 'Kies een andere installatiemethode'.
Klik vervolgens op 'Installeer via SSH-keys'.
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.
Geef de inhoud van je public key op en een beschrijving (bijvoorbeeld de naam van je computer) en klik op 'Key toevoegen'.
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.