Octobre rose : le dépistage précoce du cancer du sein sauve des vies. En savoir plus
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 janvier 2026 8 min de lecture 335 vues 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 !

Questions fréquentes

Comment resoudre l'erreur Permission denied (publickey) ?

Cette erreur signifie que votre cle SSH n'est pas enregistree sur le serveur Git. Vous devez generer une cle SSH avec ssh-keygen, puis ajouter la cle publique dans les parametres de votre compte GitLab ou GitHub.

Quelle est la difference entre la cle publique et la cle privee SSH ?

La cle privee (id_ed25519) reste sur votre ordinateur et ne doit jamais etre partagee. La cle publique (id_ed25519.pub) est enregistree sur les serveurs Git pour vous identifier. C'est comme un cadenas (public) que seule votre cle (privee) peut ouvrir.

Comment tester si ma connexion SSH fonctionne ?

Utilisez la commande ssh -T git@github.com pour GitHub ou ssh -T git@gitlab.com pour GitLab. Si la connexion fonctionne, vous verrez un message de bienvenue avec votre nom d'utilisateur.

Pourquoi ne puis-je pas pousser sur la branche main ?

La branche main est souvent protegee. Vous devez creer une nouvelle branche avec git checkout -b ma-branche, pousser cette branche, puis creer une Merge Request pour fusionner vos modifications.

Faut-il mettre un mot de passe sur la cle SSH ?

C'est optionnel. Sans mot de passe, l'utilisation est plus simple. Avec un mot de passe (passphrase), c'est plus securise mais vous devrez le saisir a chaque utilisation. Pour les debutants, commencer sans mot de passe est acceptable.

#Git #DevOps #SSH #GitLab #GitHub #Tutoriel

Partager cet article

Jordane YENO
Jordane YENO

Développeur web et mobile à Port-Gentil et Libreville. J'écris sur ce que je construis et ce que j'apprends.

En savoir plus
À lire ensuite

Articles similaires

Retour au blog