In het vorige artikel hebben we de basisprincipes van het ssh-commando en handige opties besproken. Het telkens handmatig invoeren van complexe IP‑adressen, gebruikersnamen en poortnummers is echter een flinke rompslomp.

Hier komt het SSH‑configuratiebestand om de hoek kijken: het verhelpt die rommel in één keer. Het is als een favorietenlijst waarin je vaak gebruikte servergegevens opslaat en via een alias snel kunt verbinden.

Ik herinner me nog de tijd dat ik het config‑bestand niet kende en als “volledig beginner” vaak een regel met een ingewikkeld ssh‑commando in mijn .bashrc als alias had gezet. Toen ik later de manier van het schrijven van een config‑bestand ontdekte, besefte ik hoe onhandig die aanpak was.

Ik verbaasde me over het SSH‑configuratiebestand


Wat is het SSH‑configuratiebestand?

SSH‑configuratiebestand is een configuratiebestand waarmee je het gedrag van de SSH‑client kunt aanpassen. Door verbindingsgegevens (gebruikersnaam, poort, sleutelbestand, etc.) voor een specifieke host op te slaan, kun je later met een korte alias verbinden.

  • Locatie: Meestal bevindt het zich als config in de .ssh‑map van je home‑directory. Als je SSH voor het eerst hebt geïnstalleerd, bestaat het nog niet; maak het dan aan.

  • Bestand aanmaken: Als ~/.ssh/config nog niet bestaat, maak het dan aan. Stel de rechten op 600 in.

bash touch ~/.ssh/config chmod 600 ~/.ssh/config # beveiliging vereist!


Regels voor het schrijven van het config‑bestand

Het config‑bestand is een eenvoudig tekstbestand. De instellingen voor elke host beginnen met het sleutelwoord Host en worden in een blok geschreven.

Basisstructuur

Host [alias]
    [optie1] [waarde1]
    [optie2] [waarde2]
    ...
  • Host [alias]: Geeft het begin van het blok aan en definieert de alias die je later gebruikt. Je kunt ook het daadwerkelijke hostadres (IP of domein) invoeren. Wildcards (*, ?) zijn toegestaan.
  • Inspringen: De opties onder Host moeten ingesprongen zijn. Je kunt spaties of tabs gebruiken, maar houd het consistent.
  • Opties: Onder Host kun je verschillende SSH‑opties opgeven die gelden voor die alias. Ze zijn identiek aan de opties die je met ssh -opt gebruikt.

Veelgebruikte opties

Optie Beschrijving Voorbeeldwaarde
HostName Het IP‑adres of domeinnaam van de server 192.168.1.100 of example.com
User Gebruikersnaam op de server ubuntu, ec2-user, root
Port SSH‑poort van de server (standaard 22) 2222
IdentityFile Pad naar het privésleutelbestand ~/.ssh/id_ed25519_myserver
ForwardAgent SSH‑agent forwarding inschakelen yes
StrictHostKeyChecking Strikte host‑sleutelcontrole (yes aanbevolen) no (tijdelijk voor tests)
PortForwarding Poortforwarding toestaan yes
LocalForward Lokale poortforwarding (-L optie) 8080 localhost:80
ServerAliveInterval Interval (in seconden) om de server te controleren 60
ServerAliveCountMax Aantal pogingen voordat de verbinding wordt verbroken 3

Voorbeeld van het schrijven van een SSH‑configuratie

Laten we een paar vaak gebruikte servers toevoegen aan ~/.ssh/config.

# Eerste server: webserver (alias: webserver)
Host webserver
    HostName 192.168.1.100
    User ubuntu
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_webserver # Specifieke sleutel voor webserver

# Tweede server: ontwikkelserver (alias: devbox)
Host devbox
    HostName dev.example.com
    User developer
    IdentityFile ~/.ssh/id_rsa_dev # RSA‑sleutel
    # Lokale poort 8000 naar de remote poort 80 forwarden
    LocalForward 8000 localhost:80 

# Derde server: alle AWS EC2‑servers (alias: aws-*)
Host aws-*
    User ec2-user
    IdentityFile ~/.ssh/aws_ec2_key.pem
    # Regelmatig een signaal sturen om de verbinding te behouden
    ServerAliveInterval 60
    ServerAliveCountMax 3

# Algemene instellingen voor een IP‑bereik (alias: 10.0.0.*)
Host 10.0.0.*
    User admin
    Port 22

Uitleg:

  • webserver: Verbindt met 192.168.1.100 als ubuntu via poort 2222 en de sleutel id_ed25519_webserver.
  • devbox: Verbindt met dev.example.com als developer met de sleutel id_rsa_dev en forwardt lokale poort 8000 naar remote poort 80.
  • aws-*: Toepast op elke alias die begint met aws-. Bij ssh aws-prod worden de User en IdentityFile automatisch toegepast.
  • 10.0.0.*: Voor elke host in het bereik 10.0.0.x wordt automatisch de gebruiker admin en poort 22 gebruikt.

In het voorbeeld is de wildcard * geïntroduceerd, maar in de praktijk gebruik ik meestal één‑op‑één‑mappen. Het is echter handig als je meerdere servers met dezelfde configuratie hebt.


Een magische afbeelding van een SSH‑verbinding die zich verspreidt over het netwerk

Hoe gebruik je het config‑bestand?

Nu je het bestand hebt opgeslagen, wordt het verbinden veel eenvoudiger. Laten we de voorbeelden uit het vorige hoofdstuk toepassen.

1. Verbinden met een alias

Gebruik alleen de alias om een SSH‑verbinding te starten.

  • Alias webserver gebruiken:
    ssh webserver
    Enter passphrase for key '/home/youruser/.ssh/id_ed25519_webserver':
    ubuntu@webserver-ip:~ $

Deze opdracht werkt intern als ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100.

  • Alias devbox gebruiken:
    ssh devbox
    Enter passphrase for key '/home/youruser/.ssh/id_rsa_dev':
    developer@devbox-domain:~ $

(Tegelijkertijd wordt poort 8000 naar 80 forwarden.)


Voordelen van het gebruik van een config‑bestand

  • Gemak: Lange, complexe commando’s worden vervangen door een korte alias, waardoor fouten verminderen en tijd bespaard wordt.
  • Productiviteit: Snelle toegang tot vaak gebruikte servers verhoogt de efficiëntie.
  • Beheer: Alle verbindingsinstellingen op één plek; bij een IP‑verandering hoef je alleen het bestand aan te passen.
  • Beveiliging: Gevoelige informatie (zoals sleutel‑paden) blijft uit de commandoregelgeschiedenis.

Tot slot

Het SSH‑configuratiebestand is een onmisbaar hulpmiddel voor elke ontwikkelaar en systeembeheerder die SSH gebruikt. Met dit bestand kun je je SSH‑ervaring aanzienlijk verbeteren. Open ~/.ssh/config, maak je eigen aliasen en geniet van een snellere, veiligere verbinding!

Lees ook andere artikelen over SSH! Zoek in de rechterkolom naar "ssh" om meer gerelateerde posts te vinden.

Heb je vragen? Laat het gerust weten in de reacties!