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 tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn