Authentification par clé publique et transfert d’agent
Comprenez authorized_keys, les clés Ed25519 et RSA, ainsi que les implications de sécurité du transfert d’agent SSH.
Authentification par clé publique et transfert d’agent est une leçon Cryptology Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cryptology Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cryptology Academy comprend 4 leçons au total.
Format du fichier authorized_keys
L’authentification SSH par clé publique repose sur le fichier authorized_keys, généralement situé à ~/.ssh/authorized_keys sur le serveur. Chaque ligne contient une clé publique au format : algorithm base64-key comment. Le serveur vérifie que le client peut prouver qu’il possède la clé privée correspondante en signant un défi.
Génération de clés SSH avec ssh-keygen
La commande ssh-keygen crée des paires de clés pour l’authentification. L’exécution de ssh-keygen -t ed25519 génère une paire de clés Ed25519 moderne. Vous pouvez indiquer un commentaire avec -C pour l’identifier, par exemple votre adresse électronique. Par défaut, l’outil enregistre la clé privée (id_ed25519) et la clé publique (id_ed25519.pub) dans ~/.ssh.
Comparaison des types de clés : RSA, ECDSA et Ed25519
Les clés RSA de 4096 bits sont très compatibles avec les systèmes anciens, mais leur signature est plus lente. ECDSA sur NIST P-256 est plus rapide et produit des signatures plus petites, mais certains cryptographes s’interrogent sur la sélection des paramètres des courbes NIST. Ed25519, fondé sur Curve25519, constitue la meilleure pratique actuelle : clés et signatures rapides et compactes, aucune faiblesse connue et disponibilité dans toutes les implémentations SSH modernes.
Clés privées protégées par une phrase secrète
Le fichier de clé privée doit être protégé par une phrase secrète. ssh-keygen chiffre la clé privée à l’aide d’une clé dérivée de la phrase secrète (bcrypt pour les clés modernes), de sorte qu’un attaquant qui dérobe le fichier ne puisse pas l’utiliser sans cette phrase secrète. Sans phrase secrète, toute personne ayant accès au fichier peut s’authentifier en votre nom auprès de tout serveur détenant la clé publique correspondante.
ssh-agent pour la gestion des clés
Le démon ssh-agent conserve les clés privées déchiffrées en mémoire pendant une session de connexion. Vous chargez une clé avec ssh-add ~/.ssh/id_ed25519, qui vous invite à saisir la phrase secrète une seule fois. Lors des connexions SSH suivantes, le client demande à l’agent de signer les défis sans ressaisir la phrase secrète, conciliant sécurité et commodité.
Comment ssh-agent signe les défis
Lorsqu’un serveur SSH envoie un défi d’authentification, le client SSH délègue la signature à ssh-agent par l’intermédiaire d’un socket Unix. L’agent effectue la signature cryptographique à l’aide de la clé privée conservée en mémoire et ne renvoie que la signature. Les octets de la clé privée ne quittent jamais le processus de l’agent, pas même pour parvenir au client SSH lui-même.
Transfert de l’agent : possibilités et risques
Le transfert de l’agent (ForwardAgent yes ou ssh -A) permet à une session SSH distante d’utiliser votre agent local pour s’authentifier auprès d’autres serveurs. Cette fonction est utile pour passer par des hôtes bastion sans copier les clés privées sur le bastion. Cependant, si le bastion est compromis, un utilisateur root qui s’y trouve peut accéder au socket de votre agent et s’authentifier en votre nom auprès de n’importe quel serveur.
ProxyJump ou ForwardAgent pour les bastions
ProxyJump (ssh -J bastion target) est une alternative plus sûre à ForwardAgent pour accéder à un hôte bastion. Il crée un tunnel TCP à travers le bastion sans y exposer le socket de votre agent. Le serveur cible reçoit une connexion directe de votre client local, tandis que le bastion ne fait que transmettre des octets TCP chiffrés, sans pouvoir utiliser vos informations d’authentification.
Authentification par certificat SSH
SSH prend en charge l’authentification par certificat, dans laquelle une autorité de certification (CA) signe les clés publiques d’hôtes et d’utilisateurs. Au lieu de distribuer des clés publiques individuelles à chaque serveur, vous configurez les serveurs pour qu’ils approuvent votre CA. Un certificat utilisateur signé accorde l’accès à tous les serveurs qui approuvent cette CA, avec une date d’expiration et des restrictions d’identité facultatives intégrées au certificat.
ssh-keyscan pour la collecte de clés en masse
L’outil ssh-keyscan se connecte à un ou plusieurs hôtes et récupère leurs clés publiques d’hôte sans authentification. Il est utile pour automatiser le remplissage des fichiers known_hosts dans des scripts de déploiement. La sortie peut être redirigée directement vers un fichier known_hosts : ssh-keyscan -H example.com >> ~/.ssh/known_hosts.
Résumé du déroulement de l’authentification par clé
Authentification par clé publique : le client envoie la clé publique, le serveur vérifie authorized_keys, le serveur envoie un défi signé avec l’ID de session, le client (par l’intermédiaire de l’agent) le signe avec la clé privée et le serveur vérifie la signature à l’aide de la clé publique enregistrée. Si elle est valide, l’authentification réussit sans transmettre aucun secret d’authentification.
Sélection du type de clé SSH
Quel type de clé SSH constitue actuellement la meilleure pratique pour les nouveaux déploiements grâce à sa rapidité, à la petite taille de ses clés et à ses solides propriétés de sécurité ?
Récapitulatif de l’authentification par clé publique
À retenir : stocker les clés publiques dans authorized_keys, protéger les clés privées avec des phrases secrètes, utiliser ssh-agent pour conserver les clés déchiffrées en mémoire, privilégier le type de clé Ed25519, utiliser ProxyJump plutôt que ForwardAgent pour accéder aux bastions afin d’éviter d’exposer le socket de l’agent et envisager les certificats SSH pour une gestion des accès à grande échelle.
Apprends Cryptology Academy avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 67
- Leçons
- 261
Questions Fréquemment Posées
La leçon « Authentification par clé publique et transfert d’agent » est-elle gratuite ?
Oui — le texte complet de « Authentification par clé publique et transfert d’agent » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cryptology Academy, passe à CoddyKit PRO. Le cours Cryptology Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Authentification par clé publique et transfert d’agent » ?
Comprenez authorized_keys, les clés Ed25519 et RSA, ainsi que les implications de sécurité du transfert d’agent SSH. Tu pratiques Cryptology Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cryptology Academy ?
Aucune expérience préalable n'est requise. Cryptology Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Authentification par clé publique et transfert d’agent » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cryptology Academy ?
Oui. Chaque leçon Cryptology Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Établissement de liaison SSH et authentification par clé d’hôte
- Authentification par clé publique et transfert d’agent
- Tunneling SSH et techniques de transfert de ports
- Durcissement de SSH et bonnes pratiques d’audit