In het vorige artikel hebben we de basis 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 Config‑bestand om de hoek kijken: het lost dat gedoe in één keer op. Het is als een favorietenlijst; je slaat de meest gebruikte servergegevens op en kunt ze via een alias snel benaderen.

Ik herinner me nog de tijd dat ik het config‑bestand niet kende. Ik vroeg me af hoe ik die ingewikkelde ssh‑verbindingen telkens opnieuw moest intypen. Ik had zelfs een alias in mijn .bashrc gezet voor de meest gebruikte commando’s. Toen ik later de juiste manier om een config‑bestand aan te maken ontdekte, besefte ik hoe onhandig mijn oude aanpak was.

Ik sta versteld van het SSH‑config‑bestand


Wat is het SSH Config‑bestand?

Het SSH Config‑bestand 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 onder de naam config in de .ssh‑map van je home‑directory. Als je SSH voor het eerst installeert, bestaat het nog niet; je moet het aanmaken.
  • Bestand aanmaken: Als ~/.ssh/config nog niet bestaat, maak het dan aan. Stel de rechten op 600 in.
    touch ~/.ssh/config
    chmod 600 ~/.ssh/config  # beveiliging vereist!

Regels voor het schrijven van het Config‑bestand

Het Config‑bestand is een eenvoudig tekstbestand. Voor elke host begint een blok met het sleutelwoord Host.

Basisstructuur

    Host [alias]
        [optie1] [waarde1]
        [optie2] [waarde2]
        ...
  • Host [alias]: Geeft het begin van het blok aan en definieert de alias die je in het SSH‑commando gebruikt. Je kunt ook een echte hostnaam/IP gebruiken. Wildcards (*, ?) zijn toegestaan.
  • Inspringen: De opties onder Host moeten ingesprongen zijn. Gebruik spaties of tabs, maar houd het consistent.
  • Opties: Onder Host kun je verschillende SSH‑opties opgeven. Deze komen overeen met de opties die je eerder met ssh -opt gebruikte.

Veelgebruikte opties

Optie Beschrijving Voorbeeldwaarde
HostName De echte hostnaam of IP van de server 192.168.1.100 of example.com
User Gebruikersnaam op de remote server ubuntu, ec2-user, root
Port SSH‑poort (standaard 22) 2222
IdentityFile Pad naar het privésleutelbestand ~/.ssh/id_ed25519_myserver
ForwardAgent SSH‑agent forwarding inschakelen yes
StrictHostKeyChecking Strikte hostkey‑controle (aanbevolen yes) no (voor tijdelijke tests)
PortForwarding Poortforwarding toestaan yes
LocalForward Lokale poortforwarding (-L optie) 8080 localhost:80
ServerAliveInterval Interval voor server‑alive‑signalen (seconden) 60
ServerAliveCountMax Aantal mislukte pogingen voor disconnect 3

Voorbeeld van het schrijven van een SSH Config‑bestand

Laten we een paar veelgebruikte 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  # eigen 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 remote 80
    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 disconnect te voorkomen
    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 sleutel id_rsa_dev en forwardt lokale poort 8000 naar remote 80.
  • aws-*: Van toepassing op elke alias die begint met aws-. De gebruikersnaam en sleutel worden automatisch toegepast.
  • 10.0.0.*: Voor elke host in het bereik 10.0.0.x wordt admin als gebruiker en poort 22 gebruikt.

In het voorbeeld gebruik ik een wildcard, maar in de praktijk maak ik meestal één‑op‑één‑mappings. Als ik dezelfde server met verschillende instellingen wil bereiken, voeg ik een extra alias toe en kies ik die via ssh mijn-alias.


Een magische afbeelding van een SSH‑verbinding

Hoe gebruik je het Config‑bestand?

Nu je het bestand hebt opgeslagen, wordt het verbinden veel eenvoudiger. Laten we de voorbeelden bekijken.

1. Verbinden via een alias

Gebruik alleen de alias in het SSH‑commando.

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

Dit commando is intern gelijk aan ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100.

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

(Met lokale poort 8000 wordt verbinding gemaakt met remote 80.)


Voordelen van het Config‑bestand

  • Gemak: Lange, complexe SSH‑commando’s worden vervangen door korte aliasen, waardoor fouten verminderen en tijd wordt bespaard.
  • 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 sleutelpaden) blijft buiten de commandoregelgeschiedenis.

Tot slot

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

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

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