SSH is een protocol op de applicatielaag en wordt veel gebruikt voor externe toegang. In dit artikel bekijken we hoe je het SSH-protocol gebruikt om verbinding te maken met externe Linux-servers en hoe je specifieke instellingen configureert om de beveiliging te verbeteren.
SSH kan met elke Linux-distributie worden gebruikt, omdat het standaard is ingeschakeld op de meeste moderne Unix- en Linux-systemen.
In deze handleiding is alles getest op Ubuntu 22.04, maar de stappen zijn ook toepasbaar op andere distributies zoals Debian, CentOS enzovoort.
Je kunt verschillende clientprogramma’s gebruiken om via SSH verbinding te maken met Linux-servers. Enkele populaire opties zijn:
Windows: PuTTY, Bitvise SSH Client, SuperPuTTY, mRemoteNG, MobaXterm
macOS: Termius of het ingebouwde SSH-hulpprogramma in Terminal
Windows (Windows 10, Windows 11, Windows Server 2019): de ingebouwde OpenSSH-client, toegankelijk via de opdrachtprompt (cmd) of PowerShell
De standaard syntaxis van het SSH-commando is:
ssh <gebruikersnaam@IP_of_domein>
Bijvoorbeeld:
ssh alex@166.1.227.189
Standaard maakt SSH verbinding via poort 22. Als de server een andere poort gebruikt, geef deze dan op met de optie -p:
ssh alex@166.1.227.189 -p 2222
Het configuratiebestand van de SSH-server heet sshd_config en bevindt zich in de map /etc/ssh. Verwar dit niet met het SSH-clientbestand ssh_config. In dit artikel richten we ons uitsluitend op het serverbestand.
Standaard zijn SSH-verbindingen gebaseerd op wachtwoorden, tenzij er tijdens het aanmaken van de server een SSH-sleutel is toegevoegd (SSH-sleutels worden in de volgende sectie besproken). In de meeste Linux-/Unix-distributies is PAM-authenticatie ingeschakeld, waardoor gebruikers met systeemaccounts kunnen inloggen met hun gebruikersnaam en wachtwoord.
Om met een wachtwoord in te loggen, heb je het adres van de externe server en de gebruikersgegevens nodig, bijvoorbeeld:
ssh alex@166.1.227.189
Na het invoeren van de opdracht wordt je gevraagd het wachtwoord in te voeren. Als dit correct is, krijg je toegang tot de server.
Bij de eerste verbinding zie je een melding over de “fingerprint” van de server. Typ yes om door te gaan.
Hoewel wachtwoordauthenticatie werkt, is dit niet de veiligste methode, omdat wachtwoorden geraden kunnen worden. Een veiligere optie is het gebruik van SSH-sleutels, zoals in de volgende sectie wordt uitgelegd.
SSH-sleutels zijn een veiligere en veelgebruikte authenticatiemethode dan wachtwoorden. SSH gebruikt twee soorten sleutels:
Openbare sleutel: wordt gebruikt voor versleuteling en kan openbaar gedeeld worden
Privésleutel: wordt gebruikt voor ontsleuteling en moet geheim blijven
Om SSH-sleutels te genereren, gebruik je het volgende commando:
ssh-keygen
Je wordt gevraagd een map te kiezen om de sleutels op te slaan. Standaard worden ze opgeslagen in de map .ssh in je home-directory, bijvoorbeeld /home/alex/.ssh. Druk op Enter om het standaardpad te gebruiken.
Vervolgens wordt gevraagd een wachtzin (passphrase) in te stellen voor extra beveiliging. Als je geen wachtzin wilt gebruiken, druk je opnieuw op Enter.
Na het genereren worden de privésleutel (id_rsa) en de openbare sleutel (id_rsa.pub) opgeslagen in de .ssh-map.
Voordat je verbinding maakt met een externe host, kopieer je de openbare sleutel naar die host met het commando ssh-copy-id:
ssh-copy-id -i /home/alex/.ssh/id_rsa.pub alex@166.1.227.189
Je wordt één keer gevraagd het wachtwoord van de externe gebruiker in te voeren. Daarna wordt de openbare sleutel aan de externe host toegevoegd en kun je zonder wachtwoord inloggen:
ssh alex@166.1.227.189
Als er geen wachtwoord meer wordt gevraagd, werkt authenticatie met sleutels correct.
Omdat wachtwoorden minder veilig zijn, wordt aangeraden wachtwoordauthenticatie uit te schakelen en uitsluitend sleutelgebaseerde toegang te gebruiken. Bewerk hiervoor het SSH-serverconfiguratiebestand:
nano /etc/ssh/sshd_config
Zoek de regel PasswordAuthentication en wijzig de waarde in no:
PasswordAuthentication no
Sla de wijzigingen op en herstart de SSH-server:
systemctl restart ssh
Belangrijk: Controleer vóór het uitschakelen van wachtwoordauthenticatie of sleutelgebaseerde authenticatie correct werkt. Zo niet, dan kun je jezelf buitensluiten van de server. In dat geval kun je wachtwoordauthenticatie herstellen via de webconsole van de server.
Standaard gebruikt de SSH-server poort 22. Je kunt dit wijzigen door het bestand sshd_config te bewerken. Zoek de regel Port, verwijder het #-teken en stel een nieuwe poort in (tussen 1024 en 65535):
Port 2224
Sla de wijzigingen op en herstart de SSH-server:
systemctl restart ssh
Om verbinding te maken via de nieuwe poort, gebruik je de optie -p:
ssh alex@166.1.227.189 -p 2224
In sommige distributies is inloggen als root standaard toegestaan. Omdat de root-gebruiker volledige systeemrechten heeft, is het veiliger om root-login uit te schakelen. Zoek de regel PermitRootLogin in het bestand sshd_config en stel deze in op no:
PermitRootLogin no
Sla het bestand op en herstart de SSH-server:
systemctl restart ssh
Je kunt SSH-toegang beperken tot specifieke gebruikers door de volgende parameters in sshd_config te gebruiken:
AllowUsers – specificeert welke gebruikers verbinding mogen maken via SSH, bijvoorbeeld:
AllowUsers test admin
DenyUsers – specificeert welke gebruikers geen SSH-toegang hebben, bijvoorbeeld:
DenyUsers nginx websrv
Om de wijzigingen toe te passen, herstart je de SSH-server:
systemctl restart ssh
SSH is een onmisbaar hulpmiddel voor het verbinden met externe servers. Naast ingebouwde versleuteling kun je je SSH-server verder beveiligen door deze correct te configureren, bijvoorbeeld door wachtwoordauthenticatie uit te schakelen en de toegang te beperken tot specifieke gebruikers.