Complete gids voor Ubuntu SSH-configuratie | Installatie, beveiligingsverbetering en probleemoplossing

目次

1. Inleiding

Het instellen van SSH op Ubuntu is essentieel voor het beheren van externe servers. SSH (Secure Shell) is een protocol dat veilige versleutelde communicatie biedt, veel gebruikt voor toegang tot externe servers, opdrachtuitvoering en bestandsoverdrachten. In deze handleiding behandelen we alles van basisinstallatie tot geavanceerde beveiligingsconfiguraties voor SSH op Ubuntu.

1.1 Waarom SSH instellen op Ubuntu?

1.1.1 Wat is SSH?

SSH (Secure Shell) is een protocol ontworpen voor veilige communicatie over een netwerk. Het wordt vaak gebruikt voor inloggen op externe servers, bestandsoverdracht en tunneling (poortforwarding). In tegenstelling tot traditionele protocollen zoals Telnet of FTP, versleutelt SSH alle communicatie, waardoor het zeer veilig is.

1.1.2 Wanneer heb je SSH nodig op Ubuntu?

SSH is nuttig voor remote management in verschillende scenario’s, zoals:

  • Beheren van cloud servers : Cloudservices zoals AWS, GCP en Vultr gebruiken SSH voor toegang tot externe servers.
  • Remote operaties in een LAN-omgeving : Toegang tot interne servers of ontwikkelingsmachines via SSH voor remote werk.
  • Beheren van IoT-apparaten : Remote besturing van ingebedde apparaten zoals Raspberry Pi.

Standaard is SSH uitgeschakeld op Ubuntu. Om het te gebruiken, moet je het handmatig installeren en configureren.

2. Basis SSH-configuratie

Om SSH op Ubuntu te gebruiken, moet je de SSH-server (OpenSSH) installeren en correct configureren. Dit gedeelte behandelt installatie, basisinstellingen, firewallconfiguratie en hoe je verbinding maakt met je server.

2.1 Installeren en starten van OpenSSH

2.1.1 Wat is OpenSSH?

OpenSSH (Open Secure Shell) is een open-source implementatie van het SSH-protocol. Het ondersteunt remote verbindingen, veilige bestandsoverdrachten (SCP en SFTP) en poortforwarding.

2.1.2 OpenSSH installeren

Standaard wordt Ubuntu niet geleverd met een voorgeïnstalleerde SSH-server. Gebruik de volgende opdracht om het te installeren:

sudo apt update && sudo apt install -y openssh-server

Deze opdracht werkt de pakketlijst bij en installeert de OpenSSH-server.

2.1.3 SSH-server starten en inschakelen

Zodra geïnstalleerd, start de SSH-server en schakel het in om bij het opstarten te lanceren.

sudo systemctl enable --now ssh

De optie enable zorgt ervoor dat SSH automatisch start wanneer het OS opstart.

2.1.4 SSH-status verifiëren

Om te controleren of de SSH-server draait, gebruik:

systemctl status ssh

Als je een uitvoer ziet zoals de volgende, draait SSH correct:

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2025-02-28 12:00:00 UTC; 5min ago

Als je inactive (dead) of failed ziet, start de service handmatig:

sudo systemctl start ssh

2.2 Firewall configureren (UFW)

Ubuntu biedt ufw (Uncomplicated Firewall) voor eenvoudige firewallbeheer. Je moet UFW configureren om SSH-verbindingen toe te staan.

2.2.1 UFW-status controleren

Controleer de huidige firewallstatus met:

sudo ufw status

Voorbeeld uitvoer (als UFW uitgeschakeld is):

Status: inactive

Voorbeeld uitvoer (als UFW ingeschakeld is):

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere

2.2.2 SSH-verkeer toestaan

Om SSH-verbindingen toe te staan op de standaardpoort 22, voer uit:

sudo ufw allow ssh

Alternatief, specificeer de poort expliciet:

sudo ufw allow 22/tcp

2.2.3 UFW inschakelen

Als UFW uitgeschakeld is, schakel het in met:

sudo ufw enable

Voordat je UFW inschakelt, zorg ervoor dat SSH is toegestaan, anders kun je jezelf buitensluiten.

2.2.4 UFW-instellingen verifiëren

Controleer of de firewallregels correct zijn toegepast:

sudo ufw status verbose

Voorbeeld uitvoer:

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)

Als je dit ziet, is SSH toegestaan door de firewall.

2.3 Verbinden met SSH

Zodra de SSH‑server draait, kun je vanaf een client‑pc verbinding maken.

2.3.1 Verbinden vanaf Linux/macOS

Open op Linux of macOS een terminal en voer uit:

ssh username@server-ip-address

Voorbeeld:

ssh user@192.168.1.100

Bij de eerste verbinding kun je een beveiligingswaarschuwing zien zoals deze:

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?

Typ yes en druk op Enter om door te gaan.

2.3.2 Verbinden vanaf Windows

Op Windows kun je PowerShell of PuTTY gebruiken om via SSH verbinding te maken.
PowerShell gebruiken
Windows 10 en later bevatten een SSH‑client in PowerShell. Maak verbinding met:

ssh username@server-ip-address

PuTTY gebruiken

  1. Download en installeer PuTTY van de officiële site .
  2. Open PuTTY en voer het IP‑adres van de server in bij Host Name (or IP address) .
  3. Stel Connection type in op SSH en klik op Open .
  4. Voer je gebruikersnaam en wachtwoord in om verbinding te maken.

3. SSH-beveiliging verbeteren

SSH is een krachtig hulpmiddel voor externe toegang, maar het laten staan met standaardinstellingen kan beveiligingsrisico’s met zich meebrengen. Aanvallers richten zich vaak op SSH‑servers met brute‑force‑aanvallen of poortscans. Om een veiliger SSH‑omgeving te creëren, is het essentieel om de juiste beveiligingsconfiguraties toe te passen.

3.1 Root‑login uitschakelen

Standaard staat Ubuntu root‑login via SSH toe. Omdat het root‑account volledige systeemprivileges heeft, is het een veelvoorkomend doelwit voor aanvallers. Het uitschakelen van root‑login en in plaats daarvan een regulier gebruikersaccount gebruiken verbetert de beveiliging aanzienlijk.

3.1.1 Configuratiestappen

  1. Bewerk het SSH‑configuratiebestand /etc/ssh/sshd_config .
    sudo nano /etc/ssh/sshd_config
    
  1. Zoek de volgende regel en wijzig deze naar PermitRootLogin no .
    PermitRootLogin no
    
  1. Sla het bestand op en herstart de SSH‑service.
    sudo systemctl restart ssh
    
  1. Controleer of de instelling is toegepast.
    sudo grep PermitRootLogin /etc/ssh/sshd_config
    

Als de output PermitRootLogin no toont, is de instelling succesvol toegepast.

3.2 Wachtwoordauthenticatie uitschakelen en openbare‑sleutel‑authenticatie inschakelen

Openbare‑sleutel‑authenticatie is veel veiliger dan afhankelijk zijn van wachtwoordauthenticatie. Met openbare‑sleutel‑authenticatie hoef je geen wachtwoord in te voeren, waardoor het risico op brute‑force‑aanvallen wordt verminderd.

3.2.1 Een SSH‑sleutelpaar genereren

Genereer op je lokale pc een SSH‑sleutelpaar:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

Dit maakt twee bestanden aan:

  • Privésleutel (id_rsa)Bewaar deze op je lokale pc (deel hem nooit publiekelijk).
  • Openbare sleutel (id_rsa.pub)Kopieer deze naar de server.

3.2.2 De openbare sleutel naar de server kopiëren

Gebruik het volgende commando om je openbare sleutel naar de server te kopiëren:

ssh-copy-id username@server-ip-address

3.2.3 Wachtwoordauthenticatie uitschakelen

Bewerk het SSH‑configuratiebestand:

sudo nano /etc/ssh/sshd_config

Zoek de volgende regel en wijzig deze naar:

PasswordAuthentication no

Herstart SSH om de wijzigingen toe te passen:

sudo systemctl restart ssh

3.3 SSH-toegang beperken tot specifieke gebruikers

Om de beveiliging te verbeteren, kun je SSH-toegang beperken tot specifieke gebruikers.

3.3.1 Configuratiestappen

  1. Open het SSH‑configuratiebestand.
    sudo nano /etc/ssh/sshd_config
    
  1. Voeg de volgende regel toe, waarin de toegestane gebruikers worden gespecificeerd.
    AllowUsers user1 user2
    
  1. Herstart SSH om de wijzigingen toe te passen.
    sudo systemctl restart ssh
    

3.4 De SSH‑poort wijzigen

De standaard SSH‑poort (22) wordt vaak aangevallen. Het wijzigen naar een niet‑standaard poort kan het risico op geautomatiseerde aanvallen verminderen.

3.4.1 Configuratiestappen

  1. Open het SSH‑configuratiebestand.
    sudo nano /etc/ssh/sshd_config
    
  1. Zoek de volgende regel en wijzig deze naar een aangepaste poort (bijv. 2200 ).
    Port 2200
    
  1. Sla het bestand op en herstart SSH.
    sudo systemctl restart ssh
    

3.4.2 Firewallinstellingen bijwerken

Na het wijzigen van de SSH‑poort, sta de nieuwe poort toe via UFW:

sudo ufw allow 2200/tcp

Controleer de instellingen:

sudo ufw status

3.5 Brute‑force‑aanvallen voorkomen met Fail2Ban

Fail2Ban is een tool die mislukte SSH‑inlogpogingen detecteert en het aanvallende IP‑adres tijdelijk blokkeert.

3.5.1 Fail2Ban installeren

sudo apt install fail2ban -y

3.5.2 Een configuratiebestand maken

Kopieer het standaardconfiguratiebestand:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Bewerk het configuratiebestand:

sudo nano /etc/fail2ban/jail.local

Pas de SSH‑sectie als volgt aan:

[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 3600

3.5.3 Fail2Ban herstarten

Herstart Fail2Ban om de wijzigingen toe te passen:

sudo systemctl restart fail2ban

3.5.4 De ban‑lijst controleren

Om te controleren welke IP‑adressen geband zijn:

sudo fail2ban-client status sshd

Samenvatting

In deze sectie hebben we essentiële SSH‑beveiligingsverbeteringen behandeld, waaronder:

  • Root‑login uitschakelen
  • Wachtwoordauthenticatie uitschakelen en publieke‑sleutel‑authenticatie inschakelen
  • SSH‑toegang beperken tot specifieke gebruikers
  • De SSH‑poort wijzigen
  • Fail2Ban gebruiken om brute‑force‑aanvallen te blokkeren

Door deze maatregelen te implementeren, kun je een veiligere SSH‑omgeving creëren.

4. Geavanceerde SSH‑configuratie

Na het configureren van SSH‑beveiliging kun je profiteren van geavanceerde instellingen om bruikbaarheid en veiligheid te verbeteren. Deze sectie behandelt het beheer van ssh.socket in Ubuntu 22.10 en later, SSH‑tunneling (poort‑forwarding), het instellen van meerdere SSH‑poorten en het beperken van SSH‑toegang tot specifieke IP‑adressen.

4.1 ssh.socket gebruiken in Ubuntu 22.10 en later

Vanaf Ubuntu 22.10 kan het beheer van de SSH‑service overschakelen van ssh.service naar ssh.socket. Hierdoor kan SSH dynamisch starten wanneer een verbindingsverzoek wordt ontvangen, waardoor het resource‑gebruik wordt verminderd.

4.1.1 De status van ssh.socket controleren

Om te controleren of ssh.socket is ingeschakeld, voer je het volgende uit:

sudo systemctl status ssh.socket

Voorbeeldoutput (indien ingeschakeld):

● ssh.socket - OpenSSH Server Socket
   Loaded: loaded (/lib/systemd/system/ssh.socket; enabled; vendor preset: enabled)
   Active: active (listening) since Fri 2025-02-28 12:00:00 UTC

4.1.2 ssh.socket in- of uitschakelen

Als ssh.socket is uitgeschakeld, schakel het dan in met:

sudo systemctl enable --now ssh.socket

Om terug te gaan naar de traditionele ssh.service, schakel ssh.socket uit en schakel ssh.service in:

sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service

4.2 SSH‑tunneling (poort‑forwarding)

SSH‑tunneling maakt veilige gegevensoverdracht mogelijk tussen een externe server en een lokale pc, waarbij externe netwerken worden omzeild.

4.2.1 Lokale poort‑forwarding

Handig voor het veilig benaderen van externe databases of webservers.
Voorbeeld: Verbinden met een externe MySQL‑server (poort 3306) vanaf je lokale pc

ssh -L 3306:localhost:3306 username@server-ip-address

4.2.2 Externe poort‑forwarding

Stelt een lokale service beschikbaar voor een externe server via SSH.
Voorbeeld: Een lokale webserver (poort 80) doorsturen naar poort 8080 op een externe server

ssh -R 8080:localhost:80 username@server-ip-address

4.2.3 Dynamische poort‑forwarding

Maakt van SSH een SOCKS‑proxy voor anoniem surfen.
Voorbeeld: Een SOCKS‑proxy maken op lokale poort 1080

ssh -D 1080 username@server-ip-address

4.3 Luisteren op meerdere SSH‑poorten

Standaard luistert SSH op één poort (poort 22). Het configureren van meerdere poorten biedt meer flexibiliteit.

4.3.1 Configuratiestappen

  1. Bewerk het SSH‑configuratiebestand.
    sudo nano /etc/ssh/sshd_config
    
  1. Voeg meerdere poort‑vermeldingen toe.
    Port 22
    Port 2200
    
  1. Herstart SSH.
    sudo systemctl restart ssh
    
  1. Sta de nieuwe poort toe in de firewall.
    sudo ufw allow 2200/tcp
    

4.4 Beperken van SSH-toegang tot specifieke IP-adressen

Om de beveiliging te verbeteren, kun je SSH-toegang beperken tot specifieke IP-adressen.

4.4.1 Configureren van /etc/hosts.allow

Sta SSH-toegang alleen toe vanaf bepaalde IP-adressen door het bestand te bewerken:

sudo nano /etc/hosts.allow

Voeg de volgende regel toe (vervang 192.168.1.100 door het toegestane IP-adres):

sshd: 192.168.1.100

4.4.2 Configureren van /etc/hosts.deny

Om standaard alle andere IP’s te blokkeren:

sudo nano /etc/hosts.deny
sshd: ALL

Dit zorgt ervoor dat alleen IP’s die in hosts.allow staan SSH kunnen benaderen.

Samenvatting

Deze sectie behandelde geavanceerde SSH-instellingen, waaronder:

  • Beheren van ssh.socket in Ubuntu 22.10 en later
  • Gebruik van SSH-tunneling (poortdoorschakeling) voor veilige verbindingen
  • Luisteren op meerdere SSH-poorten
  • Beperken van SSH-toegang tot specifieke IP’s

Het toepassen van deze instellingen verbetert de SSH-beveiliging en bruikbaarheid.

5. Problemen met SSH oplossen

Zelfs met een juiste configuratie kunnen er SSH-problemen optreden. Deze sectie biedt oplossingen voor veelvoorkomende SSH-problemen.

5.1 Niet in staat om verbinding te maken met SSH

Als je een Connection refused– of time-outfout krijgt, controleer dan het volgende.

5.1.1 SSH-service draait niet

Controleer de status van de SSH-service:

sudo systemctl status ssh

Oplossing:

  • Als Active: inactive (dead) of failed, herstart SSH.
    sudo systemctl restart ssh
    
  • Schakel in dat SSH automatisch start.
    sudo systemctl enable ssh
    

5.1.2 Firewall blokkeert SSH

Zorg ervoor dat SSH is toegestaan via UFW:

sudo ufw status

Oplossing: Als SSH niet is toegestaan:

sudo ufw allow 22/tcp

Als je een aangepaste poort gebruikt:

sudo ufw allow 2200/tcp

5.2 Authenticatiefouten

Als SSH inlogpogingen weigert, controleer dan het volgende:

5.2.1 Onjuiste gebruikersnaam of wachtwoord

Zorg ervoor dat je de juiste gebruikersnaam gebruikt:

ssh username@server-ip-address

5.2.2 Problemen met authenticatie via openbare sleutel

Controleer of je openbare sleutel correct is opgeslagen in ~/.ssh/authorized_keys.

cat ~/.ssh/authorized_keys

5.2.3 Onjuiste permissies

Zorg ervoor dat de SSH-map en bestanden de juiste permissies hebben:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Samenvatting

Deze sectie behandelde veelvoorkomende SSH-problemen en hun oplossingen, waaronder:

  • Controleren of SSH draait
  • Zorgen dat de firewall SSH niet blokkeert
  • Authenticatieproblemen oplossen

Gebruik deze stappen om snel SSH-verbindingproblemen op te lossen.

6. FAQ (Veelgestelde vragen)

Deze sectie behandelt veelvoorkomende SSH-gerelateerde vragen en oplossingen om je SSH-ervaring te verbeteren terwijl de beveiliging behouden blijft.

6.1 Hoe SSH-timeouts voorkomen?

Als SSH-verbindingen na een periode van inactiviteit worden verbroken, probeer dan de volgende instellingen.

6.1.1 Server-side configuratie

Bewerk /etc/ssh/sshd_config en voeg toe:

ClientAliveInterval 60
ClientAliveCountMax 3

Herstart SSH om de wijzigingen toe te passen:

sudo systemctl restart ssh

6.1.2 Client-side configuratie

Pas het lokale SSH-configuratiebestand ~/.ssh/config aan:

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

6.2 Wat te doen als ik mijn SSH-wachtwoord vergeet?

6.2.1 Als je fysieke toegang tot de server hebt

  1. Start op in herstelmodus via het GRUB-menu.
  2. Reset het wachtwoord met het volgende commando:
    passwd username
    
  1. Herstart het systeem.

6.2.2 Als je geen fysieke toegang tot de server hebt (bijv. Cloud VPS)

  • Gebruik de console-functie van de cloudprovider om toegang te krijgen tot de server.
  • Stel SSH-sleutel authenticatie in plaats van wachtwoorden te gebruiken.

6.3 Hoe SSH op Windows gebruiken?

6.3.1 PowerShell gebruiken

Windows 10 en later bevatten een ingebouwde SSH-client. Open PowerShell en voer uit:

ssh username@server-ip-address

6.3.2 PuTTY gebruiken

  1. Download en installeer PuTTY .
  2. Voer het IP-adres van de server in Host Name (or IP address) .
  3. Selecteer SSH als het verbindingstype en klik op Open .
  4. Log in met je gebruikersnaam en wachtwoord.

6.4 Hoe SSH in Ubuntu WSL (Windows Subsystem for Linux) in te stellen?

Om SSH op WSL in te schakelen, volg deze stappen.

6.4.1 SSH-server installeren

sudo apt update && sudo apt install openssh-server

6.4.2 SSH configureren

Bewerk /etc/ssh/sshd_config en schakel wachtwoordauthenticatie in:

PasswordAuthentication yes

Aangezien WSL standaard geen systemd gebruikt, start SSH handmatig:

sudo service ssh start

6.5 Welke extra beveiligingsmaatregelen moet ik nemen?

6.5.1 Fail2Ban installeren

Voorkom brute‑force aanvallen door Fail2Ban te installeren:

sudo apt install fail2ban -y

Bewerk het configuratiebestand /etc/fail2ban/jail.local:

[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600

Herstart Fail2Ban:

sudo systemctl restart fail2ban

6.5.2 SSH‑poort wijzigen

Pas /etc/ssh/sshd_config aan om de standaard SSH‑poort te wijzigen:

Port 2200

Herstart SSH en werk de firewallinstellingen bij:

sudo ufw allow 2200/tcp

6.6 Hoe SSH‑logs in realtime bekijken?

Om SSH‑logs in realtime te bekijken, gebruik:

sudo journalctl -u ssh -f

Om eerdere logs te bekijken:

sudo cat /var/log/auth.log | grep ssh

6.7 Hoe SSH handiger maken?

6.7.1 .ssh/config gebruiken voor gemakkelijke login

Sla vaak gebruikte SSH‑verbindingen op in ~/.ssh/config:

Host myserver
    HostName 192.168.1.100
    User user
    Port 2200
    IdentityFile ~/.ssh/id_rsa

Nu kun je verbinden met:

ssh myserver

6.7.2 ssh-agent gebruiken om herhaald invoeren van wachtwoord te vermijden

Voer uit:

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

Dit maakt SSH‑verbindingen mogelijk zonder elke keer de wachtwoordzin in te voeren.

Samenvatting

Deze sectie gaf antwoorden op veelvoorkomende SSH‑gerelateerde vragen, waaronder:

  • Voorkomen van SSH‑timeouts
  • Herstellen van een vergeten wachtwoord
  • SSH gebruiken op Windows en WSL
  • Extra beveiligingsmaatregelen toepassen
  • SSH‑logs monitoren
  • SSH‑gebruik handiger maken

Door deze tips te volgen, kun je een veilige en efficiënte SSH‑omgeving voor beheer op afstand creëren.

Gerelateerde artikelen

Related

1. Introductie Door SSH op Ubuntu te gebruiken, kun je veilig je server of pc op afstand en beheren. Deze gids legt alle[…]