Aller au contenu
Administration Linux medium

Créer et gérer des clés SSH

9 min de lecture

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").

  • 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_keys manuellement quand nécessaire
  • Utiliser ssh-agent pour 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
SituationTechnique
Se connecter sans mot de passe à un serveurssh-keygen + ssh-copy-id
Lancer Ansible sans être interrompuclé sans passphrase ou ssh-agent
Accéder à GitHub / GitLab en SSHclé 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

Fenêtre de terminal
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_ed25519
Your public key has been saved in /home/bob/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:abc123... bob@workstation
Fenêtre de terminal
ssh-keygen -t rsa -b 4096 -C "bob@workstation"
Fenêtre de terminal
# Clé dédiée au serveur de backup
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_backup -C "backup@workstation"
# Clé pour GitHub
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_github -C "bob@github"

Fenêtre de terminal
ssh-copy-id bob@192.168.1.10

ssh-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 :

Fenêtre de terminal
ssh-copy-id -p 2222 bob@192.168.1.10
ssh-copy-id -i ~/.ssh/id_ed25519_backup.pub bob@backup.example.com

Vérifier que ça fonctionne :

Fenêtre de terminal
ssh bob@192.168.1.10
# doit se connecter sans demander de mot de passe (ou avec la passphrase de clé)

Sur RHEL, ssh-copy-id n'est pas toujours disponible. La méthode manuelle est aussi celle testée à l'examen :

  1. Afficher la clé publique sur la machine cliente

    Fenêtre de terminal
    cat ~/.ssh/id_ed25519.pub

    Copiez la ligne entière (commence par ssh-ed25519).

  2. Sur le serveur distant, préparer authorized_keys

    Fenêtre de terminal
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "ssh-ed25519 AAAA... bob@workstation" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
  3. Vérifier la connexion

    Fenêtre de terminal
    ssh bob@192.168.1.10

C'est le premier point à vérifier si l'authentification par clé échoue :

Fenêtre de terminal
# Répertoire SSH
chmod 700 ~/.ssh
# Clé privée — lisible uniquement par le propriétaire
chmod 600 ~/.ssh/id_ed25519
# Clé publique — peut être lue par tous
chmod 644 ~/.ssh/id_ed25519.pub
# Fichier de clés autorisées — critique
chmod 600 ~/.ssh/authorized_keys
# Fichier de configuration client
chmod 600 ~/.ssh/config
# Hôtes connus
chmod 644 ~/.ssh/known_hosts

Vérification rapide :

Fenêtre de terminal
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 config

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.

Fenêtre de terminal
# 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 fois
ssh-add ~/.ssh/id_ed25519
# Vérifier les clés chargées
ssh-add -l

Sortie de ssh-add -l :

256 SHA256:abc123... bob@workstation (ED25519)
Fenêtre de terminal
# Clé mémorisée pendant 4 heures
ssh-add -t 4h ~/.ssh/id_ed25519

Quand vous utilisez plusieurs clés (serveurs de production, serveurs de backup, GitHub, GitLab), déclarez-les dans ~/.ssh/config :

# GitHub
Host github.com
User git
IdentityFile ~/.ssh/id_ed25519_github
# Serveurs de backup
Host 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_prod

Sans 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 :

Fenêtre de terminal
# Sur le serveur
sudo vim /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
Fenêtre de terminal
# Redémarrer le service
sudo systemctl restart ssh # Debian/Ubuntu
sudo systemctl restart sshd # RHEL/Fedora

SymptômeCause probableAction
Permission denied (publickey)Permissions ~/.ssh/ incorrectesCorriger avec chmod 700 ~/.ssh && chmod 600 authorized_keys
Permission denied (publickey)Clé publique absente de authorized_keysVérifier avec cat ~/.ssh/authorized_keys côté serveur
SSH demande toujours le mot de passePasswordAuthentication yes toujours actifVérifier /etc/ssh/sshd_config côté serveur
Too many authentication failuresTrop de clés essayéesAjouter 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 RHELSELinux contexte incorrect sur ~/.ssh/restorecon -Rv ~/.ssh

  • Ed25519 est le choix recommandé en 2026, compact, rapide, sûr
  • Les permissions ~/.ssh/ sont non négociables : 700 sur le dossier, 600 sur authorized_keys et les clés privées
  • ssh-copy-id est la méthode rapide ; la copie manuelle dans authorized_keys est la méthode RHCSA
  • ssh-agent élimine la saisie répétée de passphrase sans sacrifier la sécurité
  • Sur RHEL, penser à restorecon si SELinux est actif et bloque l'authentification par clé

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn