DevOps

Configurer SSH pour Git : Guide Complet GitLab, GitHub et Bitbucket

Tutoriel complet pour configurer SSH avec Git, GitLab et GitHub. Resolvez l'erreur Permission denied (publickey) en 10 minutes et maitrisez le workflow Git professionnel.

28 Jan 2026 8 min de lecture 51 vues
51

Lectures

8

Minutes

0

Partages

Le Problème : Permission denied (publickey)

Vous essayez de cloner un projet Git et vous obtenez cette erreur frustrante :

$ git clone git@gitlab.com:mon-equipe/mon-projet.git

git@gitlab.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct accèss rights
and the repository exists.

Bonne nouvelle ! Ce tutoriel va resoudre ce problème en quelques étapes simples. Suivez le guide !

Comprendre SSH en 2 minutes

Pourquoi cette erreur ?

Quand vous utilisez SSH pour Git, le serveur (GitLab, GitHub...) a besoin de vous identifier. C'est comme un videur a l'entree d'un club VIP : si vous n'etes pas sur la liste, vous n'entrez pas !

Comment fonctionne SSH ?

SSH utilise un système de deux clés :

  • Cle Privee (id_ed25519) : Reste sur votre ordinateur. SECRETE, ne jamais partager !
  • Cle Publique (id_ed25519.pub) : Enregistree sur GitLab/GitHub. Peut etre partagee.

Analogie : La clé publique est comme un cadenas que vous donnez a quelqu'un. Seule votre clé privee peut l'ouvrir !

Étape 1 : Ouvrir le Terminal

Sur Windows

Option 1 : PowerShell

  1. Appuyez sur Windows + R
  2. Tapez powershell
  3. Appuyez sur Entree

Option 2 : Git Bash (recommande)

  1. Clic droit sur le Bureau
  2. Selectionnez "Git Bash Here"

Sur macOS

  1. Appuyez sur Cmd + Espace
  2. Tapez Terminal
  3. Appuyez sur Entree

Sur Linux

Appuyez sur Ctrl + Alt + T ou cherchez "Terminal" dans vos applications.

Étape 2 : Verifier les clés SSH existantes

Tapez cette commande pour voir si vous avez deja une clé SSH :

$ ls -la ~/.ssh/

Résultat A : Le dossier n'existe pas

ls: cannot accèss '/home/user/.ssh/': No such file or directory

Pas de clé SSH. Passez a l'étape 3.

Résultat B : Des fichiers existent

total 12
drwx------  2 user user 4096 Jan 28 10:00 .
drwxr-xr-x 15 user user 4096 Jan 28 09:00 ..
-rw-------  1 user user  411 Jan 28 10:00 id_ed25519
-rw-r--r--  1 user user   99 Jan 28 10:00 id_ed25519.pub

Vous avez deja une clé ! Vous pouvez passer a l'étape 4.

Étape 3 : Créer votre clé SSH

Remplacez votre-email@example.com par votre vrai email :

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

Question 1 : Ou sauvegarder la clé ?

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):

Appuyez sur Entree pour accepter l'emplacement par defaut.

Question 2 : Mot de passe (passphrase) ?

Enter passphrase (empty for no passphrase):
OptionActionAvantage
Sans mot de passeAppuyez sur EntreePlus simple au quotidien
Avec mot de passeTapez un mot de passePlus securise

Pour les débutants : Appuyez sur Entree deux fois (pas de mot de passe). Vous pourrez toujours en ajouter un plus tard.

Résultat attendu

Your identification has been saved in /home/user/.ssh/id_ed25519
Your public key has been saved in /home/user/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz1234567890 votre-email@example.com

Felicitations ! Votre clé SSH est créée. Deux fichiers ont ete generes dans ~/.ssh/

Étape 4 : Récupérer votre clé publique

Affichez votre clé publique avec cette commande :

$ cat ~/.ssh/id_ed25519.pub

Résultat

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExEmPlEdEcLeSsIoNs4VmBnCLdeOfqNP9Lzpd votre-email@example.com

Important : Copiez toute la ligne, du ssh-ed25519 jusqu'a votre email.

Copier facilement dans le presse-papier

SystèmeCommande
Windowscat ~/.ssh/id_ed25519.pub | clip
macOScat ~/.ssh/id_ed25519.pub | pbcopy
Linuxcat ~/.ssh/id_ed25519.pub | xclip -selection clipboard

Étape 5 : Ajouter la clé sur le serveur Git

Pour GitLab

  1. Connectez-vous a GitLab (gitlab.com ou votre serveur)
  2. Cliquez sur votre photo de profil (en haut a droite)
  3. Cliquez sur "Edit profile"
  4. Dans le menu a gauche, cliquez sur "SSH Keys"
  5. Cliquez sur "Add new key"
  6. Dans "Key" : collez votre clé publique (Ctrl+V)
  7. Dans "Title" : donnez un nom (ex: "Mon PC Windows")
  8. Cliquez sur "Add key"

Pour GitHub

  1. Connectez-vous a GitHub.com
  2. Cliquez sur votre photo puis Settings
  3. Cliquez sur "SSH and GPG keys"
  4. Cliquez sur "New SSH key"
  5. Title : donnez un nom
  6. Key : collez votre clé publique
  7. Cliquez sur "Add SSH key"

Pour Bitbucket

  1. Connectez-vous a Bitbucket
  2. Cliquez sur votre photo puis Personal settings
  3. Cliquez sur "SSH keys"
  4. Cliquez sur "Add key"
  5. Collez votre clé et sauvegardez

Étape 6 : Tester la connexion

Avant de cloner, verifions que tout fonctionne :

Pour GitLab

$ ssh -T git@gitlab.com

Réponse attendue :

Welcome to GitLab, @votre-username!

Pour GitHub

$ ssh -T git@github.com

Réponse attendue :

Hi votre-username! You've succèssfully authenticated, but GitHub does not provide shell accèss.

Premiere connexion ? Si vous voyez un message demandant de confirmer l'authenticite de l'hote, tapez yes et appuyez sur Entree.

Étape 7 : Cloner votre projet

Maintenant vous pouvez cloner n'importe quel projet :

$ git clone git@gitlab.com:mon-equipe/mon-projet.git

Résultat attendu

Cloning into 'mon-projet'...
remote: Enumerating objects: 156, done.
remote: Counting objects: 100% (156/156), done.
remote: Compressing objects: 100% (89/89), done.
Receiving objects: 100% (156/156), 1.25 MiB | 2.50 MiB/s, done.
Resolving deltas: 100% (67/67), done.

Bravo ! Votre projet est clone ! Vous n'aurez plus jamais a entrer de mot de passe pour Git.

Étape 8 : Pousser vos modifications (git push)

Après avoir clone le projet et fait vos modifications :

$ git add .
$ git commit -m "Ma premiere modification"
$ git push

Problème : Branche protegee

Vous pouvez rencontrer cette erreur :

remote: GitLab: You are not allowed to push code to protected branches on this project.
! [remote rejected] main -> main (pre-receive hook declined)

Explication : La branche main est protegee. C'est une bonne pratique de sécurité qui empeche de modifier directement le code principal.

Solution : Créer une nouvelle branche

# Créer une nouvelle branche et y basculer
$ git checkout -b ma-fonctionnalité

# Pousser cette branche sur le serveur
$ git push -u origin ma-fonctionnalité

Succès ! Votre code est sur le serveur. GitLab vous donne meme un lien pour créer une Merge Request !

Étape 9 : Créer une Merge Request (MR)

Une Merge Request (ou Pull Request sur GitHub) permet de demander la fusion de votre branche dans main.

Pourquoi utiliser une Merge Request ?

  • Revue de code : Vos collegues peuvent relire vos modifications
  • Tests automatiques : Les pipelines CI/CD peuvent vérifiér que tout fonctionne
  • Historique propre : On sait qui a fait quoi et pourquoi

Créer une MR sur GitLab

  1. Après le git push, GitLab vous donne un lien direct dans le terminal
  2. Ou manuellement : allez sur votre projet GitLab, cliquez sur "Merge Requests", puis "New merge request"
  3. Selectionnez votre branche comme source et main comme cible
  4. Remplissez le titre et la description
  5. Cliquez sur "Create merge request"

Resume des commandes

# ============ CONFIGURATION SSH (1 fois) ============

# 1. Verifier les clés existantes
ls -la ~/.ssh/

# 2. Créer une nouvelle clé SSH
ssh-keygen -t ed25519 -C "votre-email@example.com"

# 3. Afficher la clé publique (a copier dans GitLab/GitHub)
cat ~/.ssh/id_ed25519.pub

# 4. Tester la connexion
ssh -T git@gitlab.com      # Pour GitLab
ssh -T git@github.com      # Pour GitHub

# ============ WORKFLOW QUOTIDIEN ============

# 5. Cloner un projet
git clone git@gitlab.com:utilisateur/projet.git
cd projet

# 6. Créer une branche pour vos modifications
git checkout -b ma-fonctionnalité

# 7. Après modifications, sauvegarder
git add .
git commit -m "Description des changements"

# 8. Envoyer sur le serveur
git push -u origin ma-fonctionnalité

# 9. Créer une Merge Request sur GitLab/GitHub (via navigateur)

Problèmes courants et solutions

Problème 1 : "Permission denied (publickey)"

Cause : Votre clé publique n'est pas enregistree sur le serveur.

Solution : Verifiez que vous avez bien ajoute votre clé dans GitLab/GitHub (étape 5). Assurez-vous d'avoir copie la clé entiere.

Problème 2 : On me demande une passphrase

Cause : Votre clé a ete créée avec un mot de passe.

Solutions :

  1. Tapez le mot de passe que vous avez défini
  2. Ou creez une nouvelle clé sans mot de passe : ssh-keygen -t ed25519 -C "email" -N ""

Problème 3 : "Could not resolve hostname"

Cause : Problème de connexion internet ou DNS.

Solution : Verifiez votre connexion internet. Essayez ping gitlab.com.

Problème 4 : "You are not allowed to push code to protected branches"

Cause : La branche main est protegee.

Solution : Creez une nouvelle branche et faites une Merge Request :

git checkout -b ma-branche
git push -u origin ma-branche

Problème 5 : La mauvaise clé est utilisee

Cause : Vous avez plusieurs clés SSH.

Solution : Creez un fichier ~/.ssh/config :

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

Conclusion

Vous savez maintenant :

  • Créer une clé SSH
  • Ajouter votre clé publique sur GitLab/GitHub
  • Cloner des projets sans mot de passe
  • Créer une branche pour vos modifications
  • Pousser vos changements sur le serveur
  • Créer une Merge Request pour intégrer votre code
  • Resoudre les problèmes courants

La configuration SSH est a faire une seule fois par ordinateur. Le workflow branche, push, Merge Request deviendra une seconde nature avec la pratique !

Des questions ? Laissez un commentaire ci-dessous !

Tags

Git DevOps SSH GitLab GitHub Tutoriel

Partagez cet article

Twitter Facebook LinkedIn
JY
Jordane YENO

Developpeur Full Stack passionne par le web et les nouvelles technologies

En savoir plus

Articles similaires