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 :
- Vous générez une paire de clés sur votre machine cliente (votre ordinateur personnel).
- Vous gardez la clé privée secrète. C'est votre identité.
- 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.

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 :
- Ouvrez un terminal sur votre ordinateur local.
- Tapez la commande
ssh-keygen -t rsa -b 4096.-t rsaspécifie l'algorithme (un classique robuste).-b 4096spécifie la taille de la clé en bits, une longueur très sécurisée.
- Lorsque le système vous demande où enregistrer la clé, vous pouvez simplement appuyer sur
Entréepour accepter l'emplacement par défaut. - 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 :
- Assurez-vous que votre machine virtuelle Ubuntu Server est bien démarrée.
- Dans le même terminal local où vous avez généré les clés, tapez la commande suivante en remplaçant
votre_useretip_du_serveurpar vos informations :ssh-copy-id votre_user@ip_du_serveur - Le système vous demandera une dernière fois le mot de passe de votre utilisateur sur le serveur Ubuntu pour autoriser la copie.
- 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.
- Dans votre terminal local, tapez votre commande de connexion habituelle :
ssh votre_user@ip_du_serveur - 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.
- 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) :
- Ouvrez le fichier de configuration du serveur SSH avec
nanoetsudo:sudo nano /etc/ssh/sshd_config - Cherchez la ligne
PasswordAuthentication yes(il se peut qu'elle soit commentée avec un#). - Modifiez-la ou décommentez-la pour qu'elle devienne :
PasswordAuthentication no - Enregistrez le fichier (
Ctrl+O,Entrée) et quitteznano(Ctrl+X). - Redémarrez le service SSH pour appliquer les changements :
sudo systemctl restart ssh - 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-keygensur 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_configsur 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.