Dans le précédent article, nous avons vu les bases de la commande ssh et quelques options très utiles. Mais retaper à chaque fois une adresse IP compliquée, un nom d’utilisateur, un numéro de port, etc., c’est franchement pénible. Dans ce genre de situation, le fichier de configuration SSH (SSH Config) règle le problème d’un coup. Comme un système de favoris, il vous permet d’enregistrer les informations de connexion pour les serveurs que vous utilisez souvent, puis de vous connecter facilement via un alias.

Et je parle en connaissance de cause. Quand j’étais un « débutant complet » et que je ne savais même pas que ce fichier existait, je me disais souvent : « Mais comment je suis censé retaper cette commande SSH longue et compliquée à chaque fois ? » Alors j’avais pris un raccourci… pas très glorieux : je copiais la ligne de commande telle quelle et je l’enregistrais comme alias dans .bashrc. Plus tard, quand j’ai enfin appris à utiliser correctement le fichier config, j’ai réalisé à quel point j’avais fait ça de manière brute, maladroite et franchement “pas futée”.

Moi, en train d’admirer la découverte du SSH config


Qu’est-ce qu’un fichier SSH Config ?

Le fichier SSH Config est un fichier de configuration qui permet de personnaliser le comportement du client SSH. Si vous y enregistrez à l’avance les informations de connexion d’un hôte (nom d’utilisateur, port, clé privée à utiliser, etc.), vous pourrez ensuite vous connecter en tapant simplement un alias court.

  • Emplacement : en général, il se trouve dans le dossier .ssh de votre répertoire personnel et s’appelle config. Si vous venez d’installer SSH, il est très possible qu’il n’existe pas encore. Dans ce cas, il faut le créer.

  • Création du fichier : si ~/.ssh/config n’existe pas, créez-le vous-même. Et surtout, mettez impérativement les permissions à 600.

touch ~/.ssh/config
chmod 600 ~/.ssh/config  # Indispensable pour la sécurité !

Règles d’écriture du fichier config

Le fichier config est un simple fichier texte. Chaque configuration d’hôte est écrite sous forme de bloc commençant par le mot-clé Host.

Structure de base

Host [alias]
    [option1] [valeur1]
    [option2] [valeur2]
    ...
  • Host [alias] : indique le début du bloc et définit l’alias que vous utiliserez dans la commande ssh. À la place d’un alias, vous pouvez aussi mettre directement l’adresse de l’hôte (IP ou domaine). Les jokers (*, ?) sont également possibles.
  • Indentation : les options sous Host doivent être indentées. Espaces ou tabulations, peu importe — l’essentiel est de rester cohérent.
  • Options : sous Host, vous listez différentes options SSH qui s’appliqueront quand vous vous connecterez via cet alias. Ce sont les mêmes options que celles utilisées en ligne de commande avec ssh -option.

Options courantes

Option Description Exemple
HostName Adresse IP ou nom de domaine réel du serveur 192.168.1.100 ou example.com
User Nom d’utilisateur distant ubuntu, ec2-user, root
Port Port SSH du serveur (22 par défaut) 2222
IdentityFile Chemin vers la clé privée à utiliser ~/.ssh/id_ed25519_myserver
ForwardAgent Activer l’agent forwarding (avec ssh-agent) yes
StrictHostKeyChecking Vérification stricte de la clé d’hôte (yes recommandé) no (temporaire au début)
PortForwarding Autoriser le port forwarding yes
LocalForward Port forwarding local (équivalent de -L) 8080 localhost:80
ServerAliveInterval Intervalle (s) pour vérifier que la connexion est vivante 60 (évite les coupures)
ServerAliveCountMax Nombre d’échecs avant coupure 3

Exemple de fichier SSH Config

Ajoutons quelques serveurs fréquemment utilisés 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 au serveur web

# Deuxième serveur : serveur de dev (alias : devbox)
Host devbox
    HostName dev.example.com
    User developer
    IdentityFile ~/.ssh/id_rsa_dev # Clé RSA
    # À la connexion, on redirige le port local 8000 vers le port 80 distant
    LocalForward 8000 localhost:80 

# Troisième exemple : tous les serveurs AWS EC2 (pattern : aws-*)
Host aws-*
    User ec2-user
    IdentityFile ~/.ssh/aws_ec2_key.pem
    # Envoie des keep-alives pour éviter la déconnexion
    ServerAliveInterval 60
    ServerAliveCountMax 3

# Configuration générale pour une plage d’IP (pattern : 10.0.0.*)
Host 10.0.0.*
    User admin
    Port 22

Explications :

  • webserver : connexion à 192.168.1.100 en tant que ubuntu, via le port 2222, avec la clé id_ed25519_webserver.
  • devbox : connexion à dev.example.com en tant que developer, avec la clé id_rsa_dev, et redirection du port local 8000 vers le port 80 distant.
  • aws-* : configuration appliquée à tous les alias commençant par aws- (ex. aws-prod, aws-dev). Les options User et IdentityFile s’appliquent automatiquement. HostName, lui, sera interprété comme prod si vous vous connectez avec aws-prod (et sera utilisé ensuite via ssh aws-prod).
  • 10.0.0.* : pour les IP au format 10.0.0.x, l’utilisateur admin et le port 22 s’appliquent automatiquement.

Pour être honnête, j’ai présenté la méthode wildcard * surtout pour la culture générale, mais dans la vraie vie je l’utilise très rarement. C’est souvent plus simple à maintenir quand on fait un mapping 1 serveur = 1 bloc de config (1:1).
Et comme il m’arrive d’accéder au même serveur avec des réglages différents, j’ajoute un alias à chaque fois — puis je choisis l’alias comme on choisit un plat sur une carte — et je n’ai plus qu’à “commander” avec ssh my-alias.


Une image magique : on appuie sur un bouton de connexion SSH et le réseau se déploie

Comment utiliser le fichier config

Une fois vos réglages enregistrés, la connexion devient beaucoup plus simple. Essayons avec les exemples ci-dessus.

1. Se connecter avec un alias

Il suffit d’exécuter ssh avec l’alias.

  • Avec l’alias webserver :
ssh webserver
Enter passphrase for key '/home/youruser/.ssh/id_ed25519_webserver':
ubuntu@webserver-ip:~ $

En interne, c’est équivalent à : ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100

  • Avec l’alias devbox :
ssh devbox
Enter passphrase for key '/home/youruser/.ssh/id_rsa_dev':
developer@devbox-domain:~ $

(En même temps, le port local 8000 est redirigé vers le port 80 de dev.example.com.)


Avantages du fichier config

  • Praticité : remplacez des commandes longues et complexes par des alias courts — moins de fautes de frappe, moins de perte de temps.
  • Productivité : passer d’un serveur à l’autre devient rapide et fluide.
  • Maintenance plus simple : tout est centralisé dans un seul fichier. Par exemple, si l’IP d’un serveur change, vous modifiez uniquement le config.
  • Sécurité : vous évitez de laisser des informations sensibles (ex. chemin de clé privée) dans l’historique de commandes.

Pour conclure

Le fichier SSH Config est un outil indispensable pour tous ceux qui utilisent SSH — développeurs comme administrateurs système. Avec lui, votre expérience de connexion devient plus simple, plus rapide et plus propre. Ouvrez ~/.ssh/config et créez vos propres alias !

N’hésitez pas à lire mes autres articles liés à SSH : utilisez la barre de recherche à droite et tapez ssh pour trouver d’autres contenus.

Et si vous avez des questions, laissez un commentaire — je répondrai avec plaisir !