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


Qu'est-ce que le fichier SSH Config ?

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.
    touch ~/.ssh/config
    chmod 600 ~/.ssh/config  # obligatoire pour la sécurité

Règles de rédaction du fichier config

Le fichier est un simple texte. Chaque hôte est défini par un bloc commençant par Host.

Structure de base

    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

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

Ajoutons quelques serveurs courants à ~/.ssh/config.

# 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

Utilisation du fichier config

Une fois le fichier configuré, la connexion devient un jeu d'enfant.

1. Connexion par alias

    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.

    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

  • 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

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 !