« Permission denied (publickey) » dans GIT : Solution

Que vous utilisiez Bitbucket ou GitHub, vous êtes peut être en ce moment même bloqué sur votre repository que vous ne parvenez pas à cloner (git clone) ou pusher (git push). Grossomodo il vous est impossible de communiquer avec le serveur qui héberge votre dépôt.

On tombe alors sur quelque chose comme ce genre de chose :

Erreur : Permission denied (publickey)

C’est très simple, on est ici confrontés à un problème de droits que nous allons solutionner grâce à un peu de config SSH. Je vous rassure, rien de fastidieux puisque nous allons nous contenter de générer et associer la clé au ssh-agent, explications plus bas.

 

Générer une nouvelle clé SSH

  1. Ouvrez le terminal
  2. Collez cette ligne de code en substituant l’adresse email par votre email configuré sur GitHub.
    ssh-keygen -t rsa -b 4096 -C "votre_email@exemple.com"
    

    Vous devriez obtenir ceci

    Generating public/private rsa key pair.
  3. Le terminal va vous demander où sauvegarder la clé, pressez le bouton Entrée pour choisir le chemin par défaut
    Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
  4. Enfin, il faudra définir un mot de passe complexe, ce que bon vous semble à condition de ne pas mettre un toto ou autre
    Enter passphrase (empty for no passphrase): [Type a passphrase]
    Enter same passphrase again: [Type passphrase again]

 

Ajouter la clé SSH à ssh-agent

Un agent SSH ? Qu’est ce que c’est ? Vous vous souvenez de la passphrase que vous avez crée plus tôt ? Le but c’est d’éviter de la retaper systématiquement à chaque fois qu’on va la solliciter. Le rôle de l’agent est de stocker ces clés, ensuite nous n’y toucherons plus.

  1. Pour assigner une nouvelle clé à l’agent ssh, il faut démarrer le service
    eval "$(ssh-agent -s)"
  2. Vous devriez obtenir une information du type
    Agent pid 78944
  3. On ajoute la clé au ssh-agent
    ssh-add -K ~/.ssh/id_rsa
    

    Où id_rsa représente le nom de la clé, celui ci peut varier

  4. Ajoutez la clé sur votre compte GitHub ou Bitbucket et le tour est joué
    pbcopy < ~/.ssh/id_rsa.pub
    # Cette ligne de code copie dans le presse-papiers la clé