Skip to content

SSH et authentification par clé

💡 Guide d'apprentissage : Vous devez saisir votre mot de passe à chaque git push ? Vous obtenez toujours "Permission denied" en vous connectant à un serveur ? Ce chapitre vous explique en 5 minutes le principe de l'authentification par clé SSH et comment vous connecter sans mot de passe à GitHub et à vos serveurs.


0. Vous avez sûrement déjà rencontré ces situations

  • git push vous demande sans cesse votre mot de passe, ce qui est agaçant
  • La connexion SSH au serveur échoue et vous ne savez pas ce que sont id_rsa et id_ed25519
  • Vous avez entendu parler de « clé publique » et « clé privée », mais vous ne savez pas laquelle partager et laquelle garder

Le problème central : le mot de passe est à la fois peu sécurisé et peu pratique. Les clés SSH résolvent simultanément les problèmes de sécurité et de commodité.


1. Mot de passe vs Clé : pourquoi la clé est meilleure ?

👇 Essayez par vous-même : comparez la connexion par mot de passe et par clé

SSH Key Authentication: Your Digital IDSymmetric vs asymmetric encryption · key pair generation · authentication flow
🔑
Password login
1Enter username and password
2Password is sent to the server over the network
3Server checks whether the password is correct
4You must enter the password every time
⚠️The password travels over the network and may be intercepted
🔐
Key login
1Put the public key on the server in advance
2Send identity when connecting, without sending the private key
3Server asks a mathematical challenge with the public key
4Your private key answers locally and only sends the answer
The private key never leaves your computer
Core idea:SSH key login is safer than passwords because the private key never travels over the network and cannot be stolen by a man-in-the-middle.

💡 En résumé

Connexion par mot de passe = envoyer le mot de passe à chaque fois pour que l'autre le vérifie (le mot de passe peut être intercepté) ; Connexion par clé = prouver que « j'ai la clé » sans jamais la montrer (la clé privée n'est jamais transmise).


2. Chiffrement asymétrique : clé publique et clé privée

Les clés SSH reposent sur le chiffrement asymétrique, qui génère deux clés en une seule opération :

Clé privée (Private Key)Clé publique (Public Key)
EmplacementVotre ordinateur ~/.ssh/id_ed25519Serveur / GitHub
Peut-on la partager ?❌ Jamais✅ Sans problème
FonctionSigner (prouver l'identité)Vérifier la signature (valider l'identité)
AnalogieLa cléLe cadenas

Types de clés courants

TypeCommandeRecommandationDescription
Ed25519ssh-keygen -t ed25519⭐⭐⭐Le plus récent, le plus rapide et le plus sécurisé
RSAssh-keygen -t rsa -b 4096⭐⭐Bonne compatibilité, mais plus lent
ECDSAssh-keygen -t ecdsaGénéralement déconseillé

3. Mise en pratique : générer et configurer une clé SSH

3.1 Générer une paire de clés

bash
ssh-keygen -t ed25519 -C "votre@email.com"

Après exécution, il vous sera demandé :

  • Chemin du fichier : appuyez sur Entrée pour utiliser le chemin par défaut ~/.ssh/id_ed25519
  • Phrase de passe : vous pouvez définir une protection supplémentaire (ou laisser vide)

3.2 Ajouter la clé publique à GitHub

bash
# 1. Copier le contenu de la clé publique
cat ~/.ssh/id_ed25519.pub | pbcopy  # macOS
cat ~/.ssh/id_ed25519.pub | xclip   # Linux

# 2. Ouvrir GitHub → Settings → SSH and GPG keys → New SSH key
# 3. Coller la clé publique, enregistrer

# 4. Tester la connexion
ssh -T git@github.com
# Succès : Hi username! You've been authenticated...

3.3 Ajouter la clé publique au serveur

bash
# Méthode 1 : ssh-copy-id (recommandé)
ssh-copy-id utilisateur@votre-serveur

# Méthode 2 : copie manuelle
cat ~/.ssh/id_ed25519.pub | ssh utilisateur@serveur "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

4. SSH Config : dites adieu aux longues commandes

Configurez des alias dans ~/.ssh/config, une seule configuration pour une utilisation à vie :

Host dev
  HostName 192.168.1.100
  User deploy
  IdentityFile ~/.ssh/id_ed25519

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519

Effet après configuration :

AvantAprès
ssh -i ~/.ssh/id_ed25519 deploy@192.168.1.100ssh dev
Mémoriser l'IP et le nom d'utilisateur à chaque foisUn seul alias suffit

5. Dépannage des problèmes courants

ProblèmeCauseSolution
Permission denied (publickey)Clé publique non ajoutée au serveurssh-copy-id utilisateur@serveur
WARNING: UNPROTECTED PRIVATE KEY FILEPermissions du fichier de clé privée trop largeschmod 600 ~/.ssh/id_ed25519
Could not resolve hostnameErreur dans la configuration SSH ConfigVérifiez le format de ~/.ssh/config
GitHub demande toujours le mot de passeVous utilisez HTTPS au lieu de SSHPassez à git@github.com:utilisateur/repo.git

6. Résumé

📚 Points essentiels

  1. Clé > Mot de passe : la clé privée n'est jamais transmise, bien plus sécurisé qu'un mot de passe
  2. Recommandation Ed25519 : l'algorithme de clé le plus moderne, rapide et sécurisé
  3. Clé publique partageable, clé privée confidentielle : retenez cette règle d'or
  4. SSH Config : configurez un alias une fois, puis connectez-vous en un clic avec ssh alias
  5. GitHub/GitLab : après avoir ajouté votre clé publique, plus besoin de mot de passe pour git push/pull

Prochaines étapes d'apprentissage :