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 verhelpt die rommel in één keer. 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 schrijven. Ik had zelfs een alias in mijn `.bashrc` gezet voor de meest gebruikte commando’s. Toen ik later de juiste manier van het maken van een config‑bestand ontdekte, besefte ik hoe onhandig mijn oude aanpak was. ![Ik sta versteld van het SSH‑config‑bestand](/media/whitedec/blog_img/ssh_config_favorite_style.webp) --- ## Wat is het SSH Config‑bestand? {#sec-481141e7802b} 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 als `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.** ```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. Voor elke host begint een blok met het sleutelwoord `Host`. #### Basisstructuur ```bash 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 zijn identiek aan de opties die je eerder met `ssh -opt` gebruikte. ### Veelgebruikte opties {#sec-488803d47bdf} | 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 {#sec-92c9daf3ee29} Laten we een paar veelgebruikte 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 # 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-*`: Toepast 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](/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 bekijken. ### 1. Verbinden via een alias {#sec-b0810f8f4908} Gebruik alleen de alias in het SSH‑commando. * **Alias `webserver`:** ```bash 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`:** ```bash 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 {#sec-2c234f7e8725} * **Gemak:** Lange, complexe SSH‑commando’s worden vervangen door korte aliasen, 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 sleutelpaden) blijft uit de commandoregelgeschiedenis. --- ## Tot slot {#sec-9c659c3d712e} 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!