Dans mon article précédent, j'ai exploré les bases de la commande `ssh` et ses options utiles. Pourtant, saisir chaque adresse IP, nom d'utilisateur et numéro de port à chaque fois reste un vrai casse-tête. C'est là qu'intervient le **fichier SSH Config** : il vous permet de stocker vos connexions fréquentes comme des favoris et de les appeler via un simple **alias**. Je me souviens, en tant que débutant complet, de m'être demandé : « Comment rédiger cette commande ssh compliquée à chaque fois ? » J'ai alors enregistré mes commandes les plus utilisées dans mon `.bashrc` sous forme d'alias. Quand j'ai découvert le fichier `config`, j'ai réalisé à quel point ma méthode était naïve. ![Je découvre le fichier SSH config](/media/whitedec/blog_img/ssh_config_favorite_style.webp) --- ## Qu'est-ce que le fichier SSH Config ? {#sec-481141e7802b} Le **fichier SSH Config** est un fichier de configuration qui personnalise le comportement du client SSH. En y enregistrant les informations de connexion (nom d'utilisateur, port, clé, etc.) pour chaque hôte, vous pouvez vous connecter simplement en tapant un alias. * **Emplacement** : généralement dans le répertoire personnel, sous `.ssh/config`. Si vous venez d'installer SSH, le fichier n'existe pas encore ; il faut le créer. * **Création** : si `~/.ssh/config` n'existe pas, créez-le et assurez‑vous que ses permissions sont `600`. ```bash touch ~/.ssh/config chmod 600 ~/.ssh/config # obligatoire pour la sécurité ``` --- ## Règles de rédaction du fichier config {#sec-a6ba2fff88f5} Le fichier est un simple texte. Chaque hôte est défini par un bloc commençant par `Host`. #### Structure de base ```bash Host [alias] [option1] [valeur1] [option2] [valeur2] ... ``` * **`Host [alias]`** : démarre le bloc et définit l'alias que vous utiliserez. Vous pouvez aussi mettre l'adresse IP ou le nom de domaine directement, et les caractères génériques (`*`, `?`) sont autorisés. * **Indentation** : les options sous `Host` doivent être indentées (espaces ou tabulations, mais cohérentes). * **Options** : elles correspondent aux paramètres que vous utilisez habituellement avec `ssh -option`. ### Options courantes {#sec-488803d47bdf} | Option | Description | Exemple | | --- | --- | --- | | `HostName` | Adresse IP ou nom de domaine réel | `192.168.1.100` ou `example.com` | | `User` | Nom d'utilisateur distant | `ubuntu`, `ec2-user`, `root` | | `Port` | Port SSH distant (22 par défaut) | `2222` | | `IdentityFile` | Chemin vers la clé privée | `~/.ssh/id_ed25519_myserver` | | `ForwardAgent` | Activer le transfert d'agent | `yes` | | `StrictHostKeyChecking` | Vérification stricte des clés d'hôte | `no` (pour tests initiaux) | | `PortForwarding` | Autoriser le transfert de port | `yes` | | `LocalForward` | Transfert de port local (`-L`) | `8080 localhost:80` | | `ServerAliveInterval` | Intervalle de vérification du serveur (s) | `60` | | `ServerAliveCountMax` | Nombre de tentatives avant déconnexion | `3` | --- ## Exemple de configuration SSH {#sec-92c9daf3ee29} Ajoutons quelques serveurs courants à `~/.ssh/config`. ```ini # Serveur web (alias : webserver) Host webserver HostName 192.168.1.100 User ubuntu Port 2222 IdentityFile ~/.ssh/id_ed25519_webserver # Serveur de développement (alias : devbox) Host devbox HostName dev.example.com User developer IdentityFile ~/.ssh/id_rsa_dev LocalForward 8000 localhost:80 # Tous les serveurs EC2 AWS (alias : aws-*) Host aws-* User ec2-user IdentityFile ~/.ssh/aws_ec2_key.pem ServerAliveInterval 60 ServerAliveCountMax 3 # Réseau 10.0.0.* (alias : 10.0.0.*) Host 10.0.0.* User admin Port 22 ``` **Explications** : * `webserver` : se connecte à `192.168.1.100` en tant qu'`ubuntu` sur le port `2222` avec la clé `id_ed25519_webserver`. * `devbox` : se connecte à `dev.example.com` en tant que `developer` avec la clé `id_rsa_dev` et forward le port local `8000` vers le port `80` distant. * `aws-*` : applique les mêmes paramètres à tout alias commençant par `aws-` (ex : `aws-prod`, `aws-dev`). * `10.0.0.*` : applique `admin` et le port `22` à toute adresse du sous‑réseau `10.0.0.x`. > En pratique, j'utilise rarement les jokers. Je préfère un mapping 1:1 pour une gestion plus simple, mais je garde la possibilité d'ajouter un alias supplémentaire pour un même serveur avec des paramètres différents. --- ![Bouton de connexion SSH déclenche une magie réseau](/media/whitedec/blog_img/ssh_config_network_magic.webp) ## Utilisation du fichier config {#sec-e176d1ccdfce} Une fois le fichier configuré, la connexion devient un jeu d'enfant. ### 1. Connexion par alias {#sec-b0810f8f4908} ```bash ssh webserver Enter passphrase for key '/home/youruser/.ssh/id_ed25519_webserver': ubuntu@webserver-ip:~ $ ``` > Cette commande équivaut à `ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100`. ```bash ssh devbox Enter passphrase for key '/home/youruser/.ssh/id_rsa_dev': developer@devbox-domain:~ $ ``` > Le port local `8000` est automatiquement forwardé vers le port `80` distant. --- ## Avantages de l'utilisation du fichier config {#sec-2c234f7e8725} * **Simplicité** : remplace des commandes longues par de courts alias, réduisant les erreurs de saisie. * **Productivité** : passez rapidement d'un serveur à l'autre. * **Gestion centralisée** : modifiez un seul fichier pour mettre à jour les adresses IP, clés, etc. * **Sécurité** : évitez d'exposer les clés privées dans l'historique des commandes. --- ## En conclusion {#sec-9c659c3d712e} Le fichier SSH Config est indispensable pour tout développeur ou administrateur système utilisant SSH. Il rend vos connexions plus rapides, plus sûres et plus faciles à gérer. Ouvrez `~/.ssh/config`, créez vos alias et profitez d'une expérience SSH simplifiée ! N'hésitez pas à explorer d'autres articles sur SSH dans la barre de recherche à droite : tapez « ssh » pour découvrir plus de ressources. Des questions ? Laissez un commentaire !