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 7 min de lecture 5 vues

5

Lectures

7

Minutes

0

Partages

Le Probleme : 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 access rights
and the repository exists.

Bonne nouvelle ! Ce tutoriel va resoudre ce probleme en quelques etapes 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 systeme de deux cles :

  • 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 cle publique est comme un cadenas que vous donnez a quelqu'un. Seule votre cle privee peut l'ouvrir !

Etape 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.

Etape 2 : Verifier les cles SSH existantes

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

$ ls -la ~/.ssh/

Resultat A : Le dossier n'existe pas

ls: cannot access '/home/user/.ssh/': No such file or directory

Pas de cle SSH. Passez a l'etape 3.

Resultat 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 cle ! Vous pouvez passer a l'etape 4.

Etape 3 : Creer votre cle SSH

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

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

Question 1 : Ou sauvegarder la cle ?

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 debutants : Appuyez sur Entree deux fois (pas de mot de passe). Vous pourrez toujours en ajouter un plus tard.

Resultat 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 cle SSH est creee. Deux fichiers ont ete generes dans ~/.ssh/

Etape 4 : Recuperer votre cle publique

Affichez votre cle publique avec cette commande :

$ cat ~/.ssh/id_ed25519.pub

Resultat

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

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

Etape 5 : Ajouter la cle 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 cle 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 cle 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 cle et sauvegardez

Etape 6 : Tester la connexion

Avant de cloner, verifions que tout fonctionne :

Pour GitLab

$ ssh -T git@gitlab.com

Reponse attendue :

Welcome to GitLab, @votre-username!

Pour GitHub

$ ssh -T git@github.com

Reponse attendue :

Hi votre-username! You've successfully authenticated, but GitHub does not provide shell access.

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

Etape 7 : Cloner votre projet

Maintenant vous pouvez cloner n'importe quel projet :

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

Resultat 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.

Etape 8 : Pousser vos modifications (git push)

Apres avoir clone le projet et fait vos modifications :

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

Probleme : 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 securite qui empeche de modifier directement le code principal.

Solution : Creer une nouvelle branche

# Creer une nouvelle branche et y basculer
$ git checkout -b ma-fonctionnalite

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

Succes ! Votre code est sur le serveur. GitLab vous donne meme un lien pour creer une Merge Request !

Etape 9 : Creer 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 verifier que tout fonctionne
  • Historique propre : On sait qui a fait quoi et pourquoi

Creer une MR sur GitLab

  1. Apres 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 cles existantes
ls -la ~/.ssh/

# 2. Creer une nouvelle cle SSH
ssh-keygen -t ed25519 -C "votre-email@example.com"

# 3. Afficher la cle 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. Creer une branche pour vos modifications
git checkout -b ma-fonctionnalite

# 7. Apres modifications, sauvegarder
git add .
git commit -m "Description des changements"

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

# 9. Creer une Merge Request sur GitLab/GitHub (via navigateur)

Problemes courants et solutions

Probleme 1 : "Permission denied (publickey)"

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

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

Probleme 2 : On me demande une passphrase

Cause : Votre cle a ete creee avec un mot de passe.

Solutions :

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

Probleme 3 : "Could not resolve hostname"

Cause : Probleme de connexion internet ou DNS.

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

Probleme 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

Probleme 5 : La mauvaise cle est utilisee

Cause : Vous avez plusieurs cles SSH.

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

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

Conclusion

Vous savez maintenant :

  • Creer une cle SSH
  • Ajouter votre cle publique sur GitLab/GitHub
  • Cloner des projets sans mot de passe
  • Creer une branche pour vos modifications
  • Pousser vos changements sur le serveur
  • Creer une Merge Request pour integrer votre code
  • Resoudre les problemes 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