Werken met de terminal deel 3; verbinden met SSH

In dit laatste deel van de reeks leg ik uit hoe je op afstand verbinding kunt maken met je hostingpakket via SSH. Zo kun je snel inloggen op je hostingomgeving zonder eerst via je browser in te hoeven loggen op cPanel. Daarnaast werkt SSH ook goed voor het kopiëren van bestanden via SFTP.

Hoe werkt SSH

Ik zal je niet al te lang vermoeien met de details, maar om het kort uit te leggen: SSH zet een versleutelde verbinding op tussen jouw computer en onze server, een soort van veilige tunnel. Over die tunnel kun je commando's of bestanden versturen naar de server. Alle data die over SSH verstuurd wordt, wordt versleuteld. Iemand die de data onderschept, ziet dat het een versleutelde verbinding is, maar niet wat er precies over en weer gestuurd wordt. Anders dan waar bij het web protocol http versleuteling pas later is toegevoegd, is SSH vanaf het begin af aan ontworpen met deze versleuteling in gedachten. Dit maakt het een erg veilig en efficiënt protocol.

SSH-verbinding bij XXL Hosting

Omdat je met de terminal erg veel mogelijkheden hebt, willen hackers ook maar al te graag inloggen op je pakket via SSH. Hierom hebben we SSH extra goed beveiligt. Normaal gesproken log je in met een wachtwoord of SSH-key op poort 22. Om het hackers moeilijker te maken hebben we 2 belangrijke wijzigingen gemaakt: ⁣

- SSH werkt via poort 2222, in plaats van 22. Hiermee omzeilen we bots die automatisch servers uitproberen om in te loggen op SSH.

- Inloggen kan alleen met een SSH-key, niet met een wachtwoord. Hiermee voorkomen we dat hackers een wachtwoord kunnen raden of makkelijk inloggen met gehackt wachtwoord.

SSH key toevoegen

Om in te loggen op SSH, heb je een SSH keypair nodig. Eerst leg ik je uit hoe je die aan kunt maken op Windows of Linux, en vervolgens hoe je die in cPanel toe kunt voegen.

Wat is een keypair

Een keypair bestaat uit een public key en een private key. De public key upload je op je hostingpakket, die is publiek en kun je in principe zorgeloos delen. De private key is geheim; deze staat alleen op jouw computer en moet je dus nooit delen! De public key en private key passen op elkaar; een beetje zoals een sleutel en een slot. Jouw computer bied bij het opzetten van de SSH verbinding zijn sleutel aan aan de server. De server kijkt vervolgens of er een slot in de 'authorized keys' staat die past. Als dat zo is, is de verbinding akkoord en ben je ingelogd. Dit gebeurt automatisch als je verbinding probeert te maken; je hoeft dus geen wachtwoord in te vullen

SSH key aanmaken op Linux/MacOS

Eerst leg ik je uit hoe je onder Unix systemen (waaronder Linux, MacOS en eventueel Windows via WSL) een key kunt aanmaken. Let op! Kopieer de commando's zonder het dollarteken mee te nemen.  

Stap 1: Open de terminal. Voer hier het volgende commando in om te kijken of je al een key hebt:

$ ls ~/.ssh

Als je al een key hebt, dan zie je als het goed is een bestand dat eindigt op '.pub' en een bestand met dezelfde naam, maar dan zonder .pub. Het bestand met .pub is je public key, en het bestand zonder pub is je private key. Sla dan stap 2 over, en ga verder naar de sectie 'SSH sleutel toevoegen aan cPanel'.

Heb je dat niet, dan is er nog geen key aanwezig en moet je die genereren.

Hier is nog geen SSH sleutel aanwezig
Hier is al wel een SSH sleutel aanwezig

Stap 2: Je kunt een SSH key gemakkelijk genereren met dit commando. Er zijn meerdere opties en mogelijkheden voor, maar ik raad aan om het onderstaande commando over te nemen:

$ ssh-keygen -t ed25519 -c 'jouw@emailadres.nl'

Je krijgt hierna enkele vragen. Deze kun je overslaan door op 'Enter' te klikken. Eventueel kun je een passphrase inschakelen. Dat is een wachtwoord die je moet invullen om de private key te kunnen gebruiken; een extra beveiliging. Dat is in principe niet nodig. Ik sla hem in het voorbeeld ook over.

Stap 3: Kopieer de publieke sleutel; deze gaan we in de volgende stap uploaden in cPanel. Je kunt de publieke sleutel tonen met het volgende commando;

$ cat ~/.ssh/ed25519.pub

Indien je SSH key een andere naam gekregen heeft dan 'ed25519', vul dan de juiste naam in.

SSH key aanmaken op Windows

Voor Windows zijn er meerdere mogelijkheden om SSH te gebruiken. Je kunt onder andere PuTTY gebruiken, maar ook WSL of de command prompt. Ik verwijs graag naar deze blogpost, over meerdere mogelijkheden: https://www.howtogeek.com/762863/how-to-generate-ssh-keys-in-windows-10-and-windows-11/

Stap 1: Open de command prompt in Windows, de CMD. Voer hier het volgende commando uit. Ik zou aanraden om hier de sterkere ed25519 versleuteling te gebruiken, door het commando

ssh-keygen -t ed25519

in te vullen.

Stap 2: Beantwoord de vragen die gesteld worden. In principe kun je hier overal het standaard antwoord accepteren door gewoon op 'Enter' te drukken. De passphrase kun je leeg laten.

Stap 3: Kopieer de publieke SSH key. Je kunt hem tonen met het onderstaande commando

type .ssh/id_ed25519.pub

SSH key uploaden in cPanel

Open cPanel via ons dashboard. Zoek naar het knopje SSH-toegang, dit kan via de zoekfunctie of door onder Tools het kopje Advanced op te zoeken en daar op SSH-toegang te klikken.

Zoek in Cpanel naar ssh toegang

Klik hier op Sleutels beheren en kies vervolgens voor Sleutels importeren.

Plak de public key die je eerder gekopieerd hebt in het onderste veld. Het bovenste veld laat je leeg. Ook de wachtwoordzin hoef je niet in te vullen.

Cpanel persoonlijke sleutel

Vervolgens moet je de net toegevoegde key 'authorizen' zodat deze gebruikt mag worden om in te loggen. Ga terug naar het SSH-key menu, en klik achter de net toegevoegde key op Beheren.

ssh sleutels beheren

Klik vervolgens op Authorize

ssh toegang authorize

De SSH key is nu ingesteld! Nu kun je inloggen op je hostingpakket.

Inloggen op SSH

Om in te loggen op SSH, heb je nog 2 gegevens nodig: het IP adres of hostnaam van de server, en de gebruikersnaam van cPanel. Ga terug naar het hoofdscherm van cPanel. Hier zie je het Shared IP address en de Gebruikersnaam

inloggen op ssh

Open de terminal als je Linux/MacOS gebruikt of de CMD als je Windows gebruikt. Tik het onderstaande commando in:

ssh <gebruikersnaam>@<shared-ip> -p 2222

dus bijvoorbeeld:

ssh hostingha@109.71.54.21 -p 2222

Je kunt ook de domeinnaam of hostnaam van de server gebruiken, dus bijvoorbeeld

ssh hostingha@hostinghandleiding.nl -p 2222

en druk op 'Enter'. Nu ben je als het goed is verbonden met SSH!

Hier kun je alle commando's uitvoeren, vanaf je computer. Om de verbinding af te sluiten, kun je het commando

logout

gebruiken.

Hiermee concludeer ik deze blogreeks. Ik hoop dat de instructies duidelijk waren, en dat je er iets aan hebt gehad. Mochten er nog vragen zijn – laat het dan gerust weten!