Dans le précédent article, nous avons examiné les usages de base de la commande ssh ainsi que quelques options utiles. Cependant, saisir systématiquement des adresses IP, des noms d'utilisateur et des numéros de port complexes peut s'avérer très fastidieux. Dans de telles situations, utiliser le fichier de configuration SSH peut vous faire gagner beaucoup de temps. C'est comme un favoris où vous pouvez sauvegarder les informations de connexion de vos serveurs préférés, vous permettant d'accéder facilement via un alias.

Illustration d'un développeur utilisant SSH config comme favoris


Qu'est-ce qu'un fichier de configuration SSH ?

Le fichier de configuration SSH est un fichier de paramètres qui personnalise le fonctionnement du client SSH. En y enregistrant à l'avance les informations de connexion pour des hôtes spécifiques (nom d'utilisateur, port, fichier de clé à utiliser, etc.), vous pouvez vous connecter ultérieurement en utilisant simplement un court alias.

  • Emplacement : Il se trouve généralement dans le dossier .ssh de votre répertoire personnel sous le nom config.
    • Exemple : ~/.ssh/config
  • Création du fichier : Si le fichier ~/.ssh/config n'existe pas, vous devez le créer vous-même.

    bash touch ~/.ssh/config chmod 600 ~/.ssh/config # Accordez les droits de lecture/écriture uniquement au propriétaire pour la sécurité


Règles de rédaction du fichier de configuration

Le fichier de configuration est un fichier texte simple, et les paramètres pour chaque hôte commencent par le mot clé Host et sont écrits sous forme de blocs.

Structure de base

Host [alias]
    [option1] [valeur1]
    [option2] [valeur2]
    ...
  • Host [alias] : Cela marque le début de ce bloc, où vous définissez l'alias que vous allez utiliser. Cet alias sera utilisé dans la commande SSH. Vous pouvez également mettre directement l'adresse réelle de l'hôte (IP ou domaine). Des caractères génériques (*, ?) peuvent également être utilisés.

  • Indentation : Les options sous Host doivent être indentées. Vous pouvez utiliser des espaces ou des tabulations, mais il est recommandé de maintenir la cohérence.

  • Options : Sous Host, vous allez lister diverses options SSH qui seront appliquées lors de la connexion avec cet alias. Ces options sont identiques à celles que vous avez utilisées précédemment sous le format ssh -option.

Options couramment utilisées

Option Description Valeur d'exemple
HostName Adresse IP ou nom de domaine du serveur auquel vous vous connectez réellement 192.168.1.100 ou example.com
User Nom du compte utilisateur utilisé pour se connecter au serveur distant ubuntu, ec2-user, root
Port Numéro de port SSH du serveur distant (par défaut 22) 2222
IdentityFile Chemin du fichier de clé privée à utiliser lors de la connexion ~/.ssh/id_ed25519_myserver
ForwardAgent Activer le transfert d'agent SSH (Agent Forwarding, lorsque ssh-agent est utilisé) yes
StrictHostKeyChecking Savoir si la vérification des clés d'hôtes doit être stricte (yes recommandé) no (utilisé temporairement lors de tests initiaux)
PortForwarding Permettre ou non le transfert de ports yes
LocalForward Configuration du transfert de port local (équivalent à -L) 8080 localhost:80
ServerAliveInterval Intervalle pour vérifier si le serveur est toujours actif (en secondes) 60 (pour éviter les déconnexions)
ServerAliveCountMax Nombre de tentatives avant de déconnecter si le serveur ne répond pas 3

Exemples de rédaction de fichiers de configuration SSH

Ajoutons quelques réglages pour quelques serveurs fréquemment utilisés dans le fichier ~/.ssh/config.

# Premier serveur : serveur web (alias : webserver)
Host webserver
    HostName 192.168.1.100
    User ubuntu
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_webserver # Utilisation d'une clé spécifique pour le serveur web

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

# Troisième serveur : tous les serveurs AWS EC2 (alias : aws-*)
Host aws-*
    User ec2-user
    IdentityFile ~/.ssh/aws_ec2_key.pem
    # Envoi régulier de signaux pour éviter les déconnexions
    ServerAliveInterval 60
    ServerAliveCountMax 3

# Réglage général pour une plage d'IP spécifique (alias : 10.0.0.*)
Host 10.0.0.*
    User admin
    Port 22

Explication :

  • webserver : Vous pouvez vous connecter au serveur 192.168.1.100 avec l'utilisateur ubuntu, en utilisant le port 2222 et la clé id_ed25519_webserver.

  • devbox : Vous pouvez vous connecter au serveur dev.example.com avec l'utilisateur developer en utilisant la clé id_rsa_dev et transférer le port local 8000 vers le port 80.

  • aws-* : Paramètres applicables à tous les alias commençant par aws-. Par exemple, si vous vous connectez à aws-prod ou aws-dev, les réglages pour User et IdentityFile sont automatiquement appliqués. HostName est défini comme prod lorsque vous vous connectez à aws-prod.

  • 10.0.0.* : Lorsque vous vous connectez à une adresse IP de type 10.0.0.x, l'utilisateur admin et le port par défaut 22 sont automatiquement appliqués.


Image magique s'étendant sur le réseau lorsque le bouton SSH est pressé

Comment utiliser le fichier de configuration

Maintenant que vous avez enregistré les réglages dans le fichier de configuration, il est beaucoup plus facile de se connecter. Essayons avec les exemples ci-dessus ?

1. Connexion avec l'alias

Exécutez la commande SSH en utilisant uniquement l'alias.

  • Utilisation de l'alias webserver :
    ssh webserver
    Enter passphrase for key '/home/youruser/.ssh/id_ed25519_webserver':
    ubuntu@webserver-ip:~ $
Cette commande fonctionne de manière interne comme `ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100`.
  • Utilisation de l'alias devbox :
    ssh devbox
    Enter passphrase for key '/home/youruser/.ssh/id_rsa_dev':
    developer@devbox-domain:~ $
(En même temps, se connecter au port local 8000 redirige vers le port 80 de dev.example.com)
  • Utilisation de l'alias aws-prod (alias générique) :
    ssh aws-prod
    Enter passphrase for key '/home/youruser/.ssh/aws_ec2_key.pem':
    ec2-user@aws-prod-hostname:~ $

Attention : Dans le cas d'un Host générique sans un HostName spécifié, le client SSH pourrait interpréter le HostName comme prod en l'absence d'autres indications. Pour une utilisation plus claire, il est courant de mapper un alias à HostName prod.example.com.


Avantages de l'utilisation du fichier de configuration

  • Commodité : Remplacez de longues et complexes commandes SSH par des alias courts afin de réduire les erreurs de saisie et de gagner du temps.
  • Productivité : Accédez facilement et rapidement aux serveurs fréquemment utilisés pour améliorer l'efficacité des travaux.
  • Gestion facile : Centralisez tous les réglages de connexion en un seul endroit pour en faciliter la maintenance. Par exemple, si l'adresse IP d'un serveur change, il suffit de modifier le fichier de configuration.
  • Sécurité : Vous n'avez pas besoin de conserver des informations sensibles (par exemple, le chemin du fichier de clé) dans l'historique des commandes.

Conclusion

Le fichier de configuration SSH est un outil essentiel pour chaque développeur et administrateur système utilisant SSH. En l'utilisant, vous pouvez rendre votre expérience de connexion SSH beaucoup plus confortable et efficace. Ouvrez le fichier ~/.ssh/config et créez vos propres alias !

Consultez également d'autres articles liés à SSH ! Cherchez 'ssh' dans la barre de recherche à droite pour trouver divers articles sur le sujet.

Si vous avez des questions, n'hésitez pas à les poser dans les commentaires !