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](/media/whitedec/blog_img/ssh_config_favorite_style.webp) --- ## Wat is het SSH‑configuratiebestand? {#sec-481141e7802b} **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 {#sec-a6ba2fff88f5} 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 {#sec-488803d47bdf} | | | | | --- | --- | --- | | **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 {#sec-92c9daf3ee29} Laten we een paar vaak gebruikte servers toevoegen aan `~/.ssh/config`. ```ini # 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](/media/whitedec/blog_img/ssh_config_network_magic.webp) ## Hoe gebruik je het config‑bestand? {#sec-e176d1ccdfce} 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 {#sec-b0810f8f4908} Gebruik alleen de alias om een SSH‑verbinding te starten. * **Alias `webserver` gebruiken:** ```bash 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:** ```bash 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 {#sec-2c234f7e8725} * **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 {#sec-9c659c3d712e} 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!