Wat is SSH en hoe gebruik je het veilig?
Auteur: Redactie Domeny.ForSale Gepubliceerd
Kort gezegd: SSH (Secure Shell) is een protocol: een verzameling communicatieregels waarmee je via een netwerk veilig verbinding kunt maken met een andere computer en daarop opdrachten kunt uitvoeren. Het versleutelt de verzonden gegevens en is daardoor ook geschikt om een server via internet op afstand te beheren. Voor een verbinding heb je een programma nodig dat SSH ondersteunt, het adres van de server, een gebruikersaccount en een wachtwoord of een correct geconfigureerde sleutel.
Waarvoor gebruik je SSH?
SSH wordt meestal gebruikt om via een terminal, een tekstinterface, op een computer op afstand te werken. Na het inloggen voer je opdrachten in die op de server worden uitgevoerd, niet op je eigen laptop. Zo kun je foutenlogboeken bekijken, software bijwerken en de configuratie van diensten aanpassen, voor zover de rechten van je account dat toelaten.
Stel dat de website op je VPS, een virtuele privéserver, niet meer werkt. Via SSH kun je controleren of de schijf vol is, foutmeldingen lezen en een dienst opnieuw starten als je daarvoor de juiste rechten hebt. Je hebt daarvoor geen grafisch bureaublad op de server nodig.
SSH heeft ook andere toepassingen:
- Bestanden overzetten via SFTP — een protocol voor bestandsoverdracht via een SSH-verbinding. SFTP is niet hetzelfde als FTP of FTPS.
- Werken met Git-repositories — een SSH-sleutel kan je toegangsrechten bevestigen wanneer je codewijzigingen ophaalt of verstuurt.
- Verbindingen tunnelen — het verkeer van een bepaalde toepassing door een versleuteld kanaal leiden, bijvoorbeeld voor toegang tot een database die niet rechtstreeks via internet bereikbaar is.
Hoe werkt een versleutelde SSH-verbinding?
Aan de ene kant draait een SSH-client, het programma dat de verbinding opzet. Aan de andere kant draait een SSH-server, de dienst die verbindingen accepteert. OpenSSH is een veelgebruikte implementatie van beide onderdelen. Standaard luistert de dienst op TCP-poort 22; een poort is een nummer dat een dienst op een apparaat aanduidt.
Bij het opzetten van de verbinding spreken de client en de server af welke beveiliging ze gebruiken en maken ze een versleuteld kanaal aan. Met de hostsleutel, de sleutel die de server identificeert, kan de client controleren met welke machine hij communiceert. Vervolgens controleert de server de identiteit van de gebruiker, bijvoorbeeld met een wachtwoord of een gebruikerssleutel.
Versleuteling beschermt de inhoud van opdrachten, resultaten en verzonden gegevens tegen afluisteren tijdens de overdracht. Ze beschermt echter niet tegen elke dreiging: een geïnfecteerde laptop kan gegevens onderscheppen voordat ze worden versleuteld, en een overgenomen server kan ze na ontsleuteling blootleggen. SSH verbergt ook niet dát er communicatie tussen de apparaten plaatsvindt.
Hoe maak je via SSH verbinding met een server?
Controleer eerst in het beheerpaneel of de documentatie van je hostingprovider of je pakket SSH biedt. Bij gedeelde hosting kan deze functie of het aantal beschikbare opdrachten beperkt zijn. Controleer het hostadres, de gebruikersnaam, de poort en de toegestane inlogmethode. Leid deze gegevens niet af uit het adres van de website.
Op Linux en macOS is een SSH-client meestal beschikbaar in de terminal. Op Windows kun je de OpenSSH-client gebruiken als die is geïnstalleerd, bijvoorbeeld in PowerShell. De basisopdracht ziet er zo uit:
ssh jan (at) serwer.example
Vervang jan door de naam van je account en server.example door het echte serveradres of het IP-adres van de server. Als de provider een andere poort opgeeft, bijvoorbeeld 2222, gebruik je:
ssh -p 2222 jan (at) serwer.example
Bij de eerste verbinding toont het programma meestal de vingerafdruk van de hostsleutel: een hash waarmee je de serversleutel kunt herkennen. Vergelijk die met informatie uit een betrouwbare bron, bijvoorbeeld het beheerpaneel van de provider, of informatie die je via een onafhankelijk kanaal van de beheerder hebt gekregen. Accepteer de sleutel niet automatisch alleen omdat het programma om toestemming vraagt.
Als je met een wachtwoord inlogt, toont de terminal meestal geen tekens of sterretjes tijdens het typen. Dat is normaal. Na het inloggen kun je whoami uitvoeren om de naam van de huidige gebruiker te controleren en pwd om de huidige map te bekijken. Met de opdracht exit beëindig je de sessie.
Wachtwoord of SSH-sleutel: wat kies je?
Inloggen met een wachtwoord is eenvoudig, maar een dienst die via internet bereikbaar is, kan het doelwit zijn van geautomatiseerde pogingen om wachtwoorden te raden. Voor regelmatig serverbeheer is een SSH-sleutel een goede keuze. Je moet de computer waarop je die bewaart echter nog steeds beveiligen.
Een SSH-sleutel bestaat uit twee samenhangende onderdelen: de publieke sleutel plaats je op de server, terwijl de privésleutel op je eigen apparaat blijft. Tijdens het inloggen bewijst de client dat hij over de privésleutel beschikt, zonder die naar de server te sturen. Verwar dit sleutelpaar niet met de hostsleutel, die de server zelf identificeert.
In OpenSSH kun je een sleutelpaar genereren met de opdracht:
ssh-keygen -t ed25519
Stel een wachtwoord in om de privésleutel te beschermen en overschrijf een bestaande sleutel niet zonder eerst te controleren waarvoor die dient. Het bestand dat eindigt op .pub bevat de publieke sleutel; voeg die toe volgens de instructies van de provider. Stuur het bestand met de privésleutel niet naar de beheerder of de technische ondersteuning.
Hoe voorkom je fouten en verlies van toegang?
Een waarschuwing over een gewijzigde hostsleutel kan het gevolg zijn van een herinstallatie van de server. Maar ze kan ook betekenen dat je verbinding maakt met een andere machine of dat iemand de communicatie probeert te onderscheppen. Controleer eerst bij de beheerder wat de oorzaak is. Als je de opgeslagen sleutel alleen verwijdert om de melding te laten verdwijnen, omzeil je een belangrijke beveiligingscontrole.
Gebruik voor dagelijks werk een account met beperkte rechten in plaats van het account root, dat volledige controle over het systeem heeft. Houd de SSH-software up-to-date en voer geen onbekende opdrachten uit zonder te begrijpen wat ze doen. Alleen de poort wijzigen is geen vervanging voor goede authenticatie.
Wil je inloggen met een wachtwoord uitschakelen? Controleer dan eerst in een tweede sessie of je met de sleutel toegang krijgt, terwijl je de eerste sessie openhoudt. Zoek voordat je de configuratie wijzigt ook uit hoe je de herstelconsole van de provider kunt gebruiken. Zo voorkom je dat een fout je de toegang tot de server ontneemt.
Zie ook: Wat is CDN?
