Dans mon dernier article, 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éécrire cette commande SSH compliquée à chaque fois ? » J'ai alors enregistré mes commandes fréquentes dans .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é privée, 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, ou même des caractères génériques (*, ?).
  • Indentation : les options sous Host doivent être indentées. Espaces ou tabulations sont acceptés, mais restez cohérent.
  • Options : listez ici les options SSH que vous souhaitez appliquer. Elles correspondent aux mêmes paramètres que vous utilisez 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 de la clé 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 que je consulte souvent dans ~/.ssh/config.

# Premier serveur : serveur web (alias : webserver)
Host webserver
    HostName 192.168.1.100
    User ubuntu
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_webserver # clé dédiée

# Deuxième serveur : serveur de développement (alias : devbox)
Host devbox
    HostName dev.example.com
    User developer
    IdentityFile ~/.ssh/id_rsa_dev # clé RSA
    # Transfert de port local 8000 vers le port 80 distant
    LocalForward 8000 localhost:80 

# Troisième serveur : tous les EC2 AWS (alias : aws-*)
Host aws-*
    User ec2-user
    IdentityFile ~/.ssh/aws_ec2_key.pem
    # Garder la connexion vivante
    ServerAliveInterval 60
    ServerAliveCountMax 3

# Configuration générale pour une plage IP (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 transfère le port local 8000 vers le port 80 distant.
  • aws-* : applique les mêmes paramètres à tout alias commençant par aws-. Par exemple, ssh aws-prod utilisera automatiquement User et IdentityFile définis.
  • 10.0.0.* : pour toute adresse IP de la forme 10.0.0.x, l'utilisateur admin et le port 22 sont appliqués.

En pratique, j'utilise rarement les caractères génériques. Je préfère un mappage 1:1 pour une gestion plus simple. Quand je dois accéder au même serveur avec des paramètres différents, j'ajoute un alias supplémentaire, comme un menu de restaurant.


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. Essayons avec l'exemple ci-dessus.

1. Connexion via 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 transféré vers le port 80 distant.


Avantages de l'utilisation du fichier config

  • Confort : remplace les longues commandes SSH par de simples alias, réduisant les erreurs de saisie.
  • Productivité : accédez rapidement aux serveurs fréquemment utilisés.
  • Gestion centralisée : toutes les configurations sont regroupées en un seul fichier, facilitant la maintenance.
  • Sécurité : évite 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. En l'utilisant, vous simplifierez et sécuriserez votre expérience de connexion. Ouvrez ~/.ssh/config, créez vos alias et profitez d'une gestion fluide de vos serveurs.

N'hésitez pas à explorer d'autres articles sur SSH dans la barre de recherche à droite. Si vous avez des questions, laissez un commentaire !