L'authentification par clé SSH est plus sûre qu'un mot de passe et permet d'automatiser les connexions. C'est le préalable à tout ce qui suit dans le parcours SSH, sans clé configurée, pas de connexion sans mot de passe, pas d'Ansible fiable, pas de pipeline CI/CD.
C'est un objectif direct RHCSA (domaine Manage Security, "Configure key-based authentication for SSH") et LFCS (domaine Networking, "Configure the OpenSSH server and client").
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Générer une paire de clés Ed25519 (ou RSA 4096) avec une passphrase
- Déployer la clé publique sur un serveur avec
ssh-copy-id - Gérer
authorized_keysmanuellement quand nécessaire - Utiliser
ssh-agentpour mémoriser la passphrase en session - Corriger les permissions de
~/.ssh/qui bloquent silencieusement l'authentification - Travailler avec plusieurs clés pour plusieurs serveurs ou rôles
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »| Situation | Technique |
|---|---|
| Se connecter sans mot de passe à un serveur | ssh-keygen + ssh-copy-id |
| Lancer Ansible sans être interrompu | clé sans passphrase ou ssh-agent |
| Accéder à GitHub / GitLab en SSH | clé dédiée + config ~/.ssh/config |
| Examen RHCSA, tâche "configure key-based auth" | ssh-keygen + authorized_keys |
Connexion à un serveur RHEL depuis RHEL (sans ssh-copy-id) | copie manuelle de la clé publique |
Générer une paire de clés
Section intitulée « Générer une paire de clés »Ed25519, recommandé
Section intitulée « Ed25519, recommandé »ssh-keygen -t ed25519 -C "bob@workstation"Options interactives :
- Enter file : appuyez sur Entrée pour l'emplacement par défaut (
~/.ssh/id_ed25519) - Passphrase : entrez une phrase secrète (fortement recommandé)
Résultat :
Your identification has been saved in /home/bob/.ssh/id_ed25519Your public key has been saved in /home/bob/.ssh/id_ed25519.pubThe key fingerprint is:SHA256:abc123... bob@workstationRSA 4096, compatibilité maximale
Section intitulée « RSA 4096, compatibilité maximale »ssh-keygen -t rsa -b 4096 -C "bob@workstation"Clé nommée pour un usage spécifique
Section intitulée « Clé nommée pour un usage spécifique »# Clé dédiée au serveur de backupssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_backup -C "backup@workstation"
# Clé pour GitHubssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_github -C "bob@github"Déployer la clé publique sur un serveur
Section intitulée « Déployer la clé publique sur un serveur »Avec ssh-copy-id (méthode recommandée)
Section intitulée « Avec ssh-copy-id (méthode recommandée) »ssh-copy-id bob@192.168.1.10ssh-copy-id se connecte par mot de passe, crée ~/.ssh/authorized_keys sur le serveur si nécessaire, et y ajoute votre clé publique.
Avec un port non standard ou une clé spécifique :
ssh-copy-id -p 2222 bob@192.168.1.10ssh-copy-id -i ~/.ssh/id_ed25519_backup.pub bob@backup.example.comVérifier que ça fonctionne :
ssh bob@192.168.1.10# doit se connecter sans demander de mot de passe (ou avec la passphrase de clé)Manuellement (RHCSA, sans ssh-copy-id)
Section intitulée « Manuellement (RHCSA, sans ssh-copy-id) »Sur RHEL, ssh-copy-id n'est pas toujours disponible. La méthode manuelle est aussi celle testée à l'examen :
-
Afficher la clé publique sur la machine cliente
Fenêtre de terminal cat ~/.ssh/id_ed25519.pubCopiez la ligne entière (commence par
ssh-ed25519). -
Sur le serveur distant, préparer
authorized_keysFenêtre de terminal mkdir -p ~/.sshchmod 700 ~/.sshecho "ssh-ed25519 AAAA... bob@workstation" >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys -
Vérifier la connexion
Fenêtre de terminal ssh bob@192.168.1.10
Permissions obligatoires de ~/.ssh/
Section intitulée « Permissions obligatoires de ~/.ssh/ »C'est le premier point à vérifier si l'authentification par clé échoue :
# Répertoire SSHchmod 700 ~/.ssh
# Clé privée : lisible uniquement par le propriétairechmod 600 ~/.ssh/id_ed25519
# Clé publique : peut être lue par touschmod 644 ~/.ssh/id_ed25519.pub
# Fichier de clés autorisées : critiquechmod 600 ~/.ssh/authorized_keys
# Fichier de configuration clientchmod 600 ~/.ssh/config
# Hôtes connuschmod 644 ~/.ssh/known_hostsVérification rapide :
ls -la ~/.ssh/Résultat attendu :
drwx------ 2 bob bob 4096 Apr 9 10:00 .-rw------- 1 bob bob 411 Apr 9 10:00 id_ed25519-rw-r--r-- 1 bob bob 103 Apr 9 10:00 id_ed25519.pub-rw------- 1 bob bob 582 Apr 9 10:00 authorized_keys-rw------- 1 bob bob 180 Apr 9 10:00 configssh-agent, mémoriser la passphrase en session
Section intitulée « ssh-agent, mémoriser la passphrase en session »Si votre clé est protégée par une passphrase, SSH la demande à chaque connexion. ssh-agent mémorise la passphrase déverrouillée pour toute la session.
# Démarrer l'agent (si pas déjà démarré par le bureau)eval "$(ssh-agent -s)"
# Ajouter la clé : demande la passphrase une seule foisssh-add ~/.ssh/id_ed25519
# Vérifier les clés chargéesssh-add -lSortie de ssh-add -l :
256 SHA256:abc123... bob@workstation (ED25519)Durée de vie limitée
Section intitulée « Durée de vie limitée »# Clé mémorisée pendant 4 heuresssh-add -t 4h ~/.ssh/id_ed25519Gérer plusieurs clés
Section intitulée « Gérer plusieurs clés »Quand vous utilisez plusieurs clés (serveurs de production, serveurs de backup, GitHub, GitLab), déclarez-les dans ~/.ssh/config :
# GitHubHost github.com User git IdentityFile ~/.ssh/id_ed25519_github
# Serveurs de backupHost backup.example.com User backupuser IdentityFile ~/.ssh/id_ed25519_backup
# Serveurs de prod (toutes les IP du sous-réseau)Host 10.0.1.* User admin IdentityFile ~/.ssh/id_ed25519_prodSans cette configuration, SSH essaie les clés par défaut (id_ed25519, id_rsa...) dans l'ordre. Avec plusieurs clés, la déclaration explicite évite les erreurs "Too many authentication failures".
Désactiver l'authentification par mot de passe (côté serveur)
Section intitulée « Désactiver l'authentification par mot de passe (côté serveur) »Une fois les clés déployées, il est recommandé de désactiver les connexions par mot de passe pour réduire la surface d'attaque :
# Sur le serveursudo vim /etc/ssh/sshd_configPasswordAuthentication noPubkeyAuthentication yes# Redémarrer le servicesudo systemctl restart ssh # Debian/Ubuntusudo systemctl restart sshd # RHEL/FedoraDépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Action |
|---|---|---|
Permission denied (publickey) | Permissions ~/.ssh/ incorrectes | Corriger avec chmod 700 ~/.ssh && chmod 600 authorized_keys |
Permission denied (publickey) | Clé publique absente de authorized_keys | Vérifier avec cat ~/.ssh/authorized_keys côté serveur |
| SSH demande toujours le mot de passe | PasswordAuthentication yes toujours actif | Vérifier /etc/ssh/sshd_config côté serveur |
Too many authentication failures | Trop de clés essayées | Ajouter IdentitiesOnly yes dans ~/.ssh/config |
ssh-add -l : "Could not open a connection to your authentication agent" | ssh-agent non démarré | eval "$(ssh-agent -s)" |
| Clé acceptée en lab mais refusée sur RHEL | SELinux contexte incorrect sur ~/.ssh/ | restorecon -Rv ~/.ssh |
Mettre en pratique
Section intitulée « Mettre en pratique »Configurer l'accès par clé pour son propre compte est une chose ; le faire proprement pour un utilisateur de service en est une autre. Sur une VM, ce lab vous fait générer une paire Ed25519, déployer la clé publique dans authorized_keys avec les bonnes permissions, puis durcir la connexion de ce compte.
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »- Ed25519 est le choix recommandé en 2026, compact, rapide, sûr
- Les permissions
~/.ssh/sont non négociables :700sur le dossier,600surauthorized_keyset les clés privées ssh-copy-idest la méthode rapide ; la copie manuelle dansauthorized_keysest la méthode RHCSAssh-agentélimine la saisie répétée de passphrase sans sacrifier la sécurité- Sur RHEL, penser à
restoreconsi SELinux est actif et bloque l'authentification par clé
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Exécuter des commandes distantes via SSH : ssh user@host cmd, pipes distants, scripts batch et collecte multi-serveurs.
- Durcir l'accès SSH : sshd_config : désactiver root, AllowUsers, fail2ban, réduire la surface d'attaque.
- Transférer des fichiers avec SFTP : Session SFTP interactive et batch, nécessite une authentification par clé configurée.