Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 46

Authentification SSH par Clé

Recommended resources

Bonjour !

Dans la leçon précédente, nous avons jeté les bases théoriques en explorant les principes du chiffrement symétrique et asymétrique. Vous avez compris comment le chiffrement asymétrique, avec sa paire de clés publique et privée, résout le défi de l'échange de secrets sur un réseau non sécurisé.

Aujourd'hui, nous allons mettre cette connaissance en pratique de manière concrète et essentielle pour tout administrateur système. Cette leçon est la dernière de notre module sur la sécurité et elle vous permettra d'atteindre l'objectif suivant : mettre en place une authentification par clé SSH pour des connexions sécurisées. Nous allons abandonner les mots de passe, plus vulnérables, au profit d'une méthode plus robuste et, à terme, plus pratique.

C'est une compétence fondamentale que vous utiliserez quotidiennement dans votre future carrière d'ingénieur en systèmes et réseaux.

1. Pourquoi abandonner les mots de passe pour SSH ?

Comme nous l'avons vu, SSH chiffre déjà la connexion. Alors, pourquoi se compliquer la vie avec des clés ? La réponse réside dans la méthode d'authentification elle-même.

  • Sécurité renforcée : Les mots de passe peuvent être devinés, interceptés ou "cassés" par des attaques par force brute. Une clé SSH est une chaîne de caractères cryptographiques extrêmement longue, la rendant mathématiquement impossible à deviner.
  • Commodité : Une fois configurée, la connexion par clé peut être plus rapide que de taper un mot de passe à chaque fois, surtout si l'on utilise un agent SSH (nous y reviendrons).
  • Automatisation : Les clés sont indispensables pour automatiser des tâches entre serveurs (comme les sauvegardes), car elles permettent des connexions non interactives et sécurisées.

Le principe est une application directe du chiffrement asymétrique :

  1. Vous générez une paire de clés sur votre machine cliente (votre ordinateur personnel).
  2. Vous gardez la clé privée secrète. C'est votre identité.
  3. Vous copiez la clé publique sur le serveur distant. C'est le "cadenas" que vous autorisez.

Lors de la connexion, le serveur utilisera votre clé publique pour vérifier que vous possédez bien la clé privée correspondante, sans que celle-ci ne transite jamais sur le réseau.

Diagramme d'authentification par clé SSH
Ce schéma illustre le concept. Le client génère une paire de clés. La clé publique est installée sur le serveur. Lorsque le client se connecte, le serveur vérifie que celui-ci détient la clé privée correspondante pour autoriser l'accès.

2. Étape 1 : Générer votre paire de clés SSH

La première étape se déroule sur votre machine locale (pas dans la machine virtuelle Ubuntu). Que vous soyez sur Windows, macOS ou Linux, le terminal moderne inclut l'outil ssh-keygen.

Cette commande va créer deux fichiers dans un dossier caché .ssh de votre répertoire personnel :

  • id_rsa (ou un nom similaire) : votre clé privée. À ne jamais partager.
  • id_rsa.pub : votre clé publique. Celle que vous déploierez sur les serveurs.

La vidéo suivante vous montre comment procéder.

Le PROTOCOLE SSH pour DÉBUTANTS 💡

La vidéo de la chaîne Hafnium - Sécurité informatique montre de manière très claire comment générer une paire de clés et explique le rôle de chaque fichier.

Regardez la vidéo de 07:12 à 09:50. Suivez les étapes pour générer votre propre paire de clés dans votre terminal local. Portez une attention particulière à l'explication sur la "passphrase".

À vous de jouer :

  1. Ouvrez un terminal sur votre ordinateur local.
  2. Tapez la commande ssh-keygen -t rsa -b 4096.
    • -t rsa spécifie l'algorithme (un classique robuste).
    • -b 4096 spécifie la taille de la clé en bits, une longueur très sécurisée.
  3. Lorsque le système vous demande où enregistrer la clé, vous pouvez simplement appuyer sur Entrée pour accepter l'emplacement par défaut.
  4. Saisissez une passphrase robuste ! C'est un mot de passe qui protège votre clé privée. Si quelqu'un vole votre fichier de clé privée, il ne pourra pas l'utiliser sans cette passphrase. C'est une couche de sécurité cruciale.

3. Étape 2 : Déployer votre clé publique sur le serveur

Maintenant que vous avez votre paire de clés, il faut "informer" votre serveur Ubuntu de l'existence de votre clé publique. Pour cela, on doit copier le contenu du fichier .pub dans le fichier ~/.ssh/authorized_keys sur le serveur.

Heureusement, il existe une commande qui fait tout cela pour vous de manière simple et sécurisée : ssh-copy-id.

SSH : La connexion par clé ! Démo et explications

La chaîne Adrien Linuxtricks propose une démonstration parfaite de la commande ssh-copy-id, qui est la méthode recommandée pour les débutants.

Regardez la vidéo de 04:45 à 06:45. L'animateur montre exactement comment utiliser ssh-copy-id pour envoyer la clé publique sur le serveur distant.

À vous de jouer :

  1. Assurez-vous que votre machine virtuelle Ubuntu Server est bien démarrée.
  2. Dans le même terminal local où vous avez généré les clés, tapez la commande suivante en remplaçant votre_user et ip_du_serveur par vos informations :
    ssh-copy-id votre_user@ip_du_serveur
    
  3. Le système vous demandera une dernière fois le mot de passe de votre utilisateur sur le serveur Ubuntu pour autoriser la copie.
  4. Une fois la commande terminée, votre clé publique est installée !

4. Étape 3 : Se connecter et renforcer la sécurité

Le moment de vérité ! Essayons de nous connecter.

  1. Dans votre terminal local, tapez votre commande de connexion habituelle :
    ssh votre_user@ip_du_serveur
    
  2. Cette fois, au lieu de vous demander le mot de passe de l'utilisateur, le système devrait vous demander la passphrase de votre clé privée. Saisissez-la.
  3. Vous voilà connecté !

La configuration est fonctionnelle, mais pas encore totalement sécurisée. Pour l'instant, le serveur accepte encore les connexions par mot de passe. La dernière étape, cruciale dans un environnement professionnel, est de les désactiver.

⚠️ ATTENTION : Ne réalisez cette étape qu'après avoir vérifié que votre connexion par clé fonctionne parfaitement. Ouvrez une deuxième fenêtre de terminal et confirmez que vous pouvez vous connecter avec la clé. Ne fermez pas votre session SSH actuelle avant d'avoir terminé et testé, sinon vous risquez de vous retrouver bloqué hors de votre serveur !

Le PROTOCOLE SSH pour DÉBUTANTS 💡

Retournons à la vidéo d'Hafnium, qui explique très bien comment modifier la configuration du serveur SSH pour n'autoriser que les clés.

Regardez la portion de 20:30 à 22:30. Elle se concentre sur l'option PasswordAuthentication dans le fichier de configuration /etc/ssh/sshd_config.

À vous de jouer (dans votre session SSH sur le serveur) :

  1. Ouvrez le fichier de configuration du serveur SSH avec nano et sudo :
    sudo nano /etc/ssh/sshd_config
    
  2. Cherchez la ligne PasswordAuthentication yes (il se peut qu'elle soit commentée avec un #).
  3. Modifiez-la ou décommentez-la pour qu'elle devienne :
    PasswordAuthentication no
    
  4. Enregistrez le fichier (Ctrl+O, Entrée) et quittez nano (Ctrl+X).
  5. Redémarrez le service SSH pour appliquer les changements :
    sudo systemctl restart ssh
    
  6. Test final : Déconnectez-vous (exit), puis essayez de vous reconnecter. Le serveur devrait maintenant refuser toute tentative de connexion qui n'utilise pas une clé autorisée.

Pour une référence écrite complète de tout ce processus, vous pouvez consulter cet article.

Configuration de l'authentification SSH par clés

L'article de IT-Connect, 'Authentification SSH par clés', fournit un excellent guide pas à pas que vous pouvez garder en référence pour toutes les étapes que nous venons de voir.

Parcourez les sections I, II, et le début de la section III ('Authentification SSH par clé sous Linux'). Cela vous servira de résumé écrit de la génération de clé, de la copie avec ssh-copy-id et de la connexion.


Conclusion

Félicitations ! Vous avez franchi une étape majeure en matière de sécurité des serveurs. Vous avez remplacé une méthode d'authentification faillible par une solution cryptographique robuste, une pratique standard dans l'industrie.

Les points clés à retenir :

  • L'authentification par clé SSH repose sur le chiffrement asymétrique.
  • On génère une paire de clés (privée/publique) avec ssh-keygen sur la machine cliente.
  • On déploie la clé publique sur le serveur, idéalement avec ssh-copy-id.
  • La passphrase est une sécurité essentielle pour protéger votre clé privée en cas de vol.
  • L'étape finale de sécurisation consiste à désactiver l'authentification par mot de passe dans sshd_config sur le serveur.

Ceci conclut notre module sur les principes de sécurité. Vous avez appris à filtrer le trafic avec un pare-feu et à sécuriser l'accès avec des clés SSH.

Dans le prochain module, "Automatisation avec les Scripts Bash", nous commencerons à voir comment un administrateur système peut gagner en efficacité en automatisant les tâches répétitives. Avoir une connexion SSH sécurisée et facilement accessible (grâce aux clés) sera un prérequis fondamental pour beaucoup de scripts que nous écrirons.