Comment générer une clé SSH avec ssh-keygen pour GitHub

Comment générer une clé SSH avec ssh-keygen pour GitHub

Le mot de passe, c’est pratique jusqu’au jour où l’on doit le saisir pour la douzième fois avant le café. Pour échanger avec GitHub depuis un terminal, une clé SSH permet de s’authentifier sans retaper son mot de passe à chaque opération. La mise en place prend quelques minutes et, une fois configurée, elle rend les échanges avec vos dépôts beaucoup plus fluides.

Voici comment générer une clé SSH avec ssh-keygen, l’ajouter à GitHub et vérifier que tout fonctionne. Pas besoin d’être administrateur système : il suffit de suivre les étapes dans l’ordre et de ne pas partager votre clé privée — même avec quelqu’un qui promet de « juste jeter un œil ».

Une clé SSH, à quoi ça sert ?

SSH est un protocole qui permet à deux machines de communiquer de façon sécurisée. Pour votre compte GitHub, l’authentification repose sur une paire de clés : une clé privée, conservée sur votre ordinateur, et une clé publique, que vous ajoutez à votre compte GitHub.

Quand vous vous connectez, GitHub vérifie que votre ordinateur possède la clé privée correspondant à la clé publique enregistrée. Vous n’avez donc pas à transmettre votre mot de passe pour chaque échange avec un dépôt.

  • id_ed25519 : la clé privée. Elle reste sur votre ordinateur et ne doit jamais être publiée ni envoyée.
  • id_ed25519.pub : la clé publique. C’est son contenu que vous pouvez ajouter à GitHub.

La règle est simple : le fichier sans l’extension .pub reste secret. Si quelqu’un récupère votre clé privée et qu’elle n’est pas protégée par une phrase secrète, il pourrait l’utiliser à votre place.

Vérifier si une clé existe déjà

Avant d’en créer une nouvelle, regardez si votre ordinateur en possède déjà une. Ouvrez un terminal sur macOS ou Linux, ou Git Bash sous Windows, puis saisissez :

ls -al ~/.ssh

Repérez d’éventuels fichiers nommés id_ed25519 et id_ed25519.pub, ou, pour une ancienne clé, id_rsa et id_rsa.pub. Si une paire existe déjà, ne l’écrasez pas sans savoir à quoi elle sert : elle peut être utilisée pour un autre service ou un autre compte.

Si vous avez déjà une clé adaptée, vous pouvez généralement l’ajouter à GitHub au lieu d’en générer une nouvelle. Si vous préférez séparer les usages, ou si vous n’avez pas de clé, créez-en une avec la commande suivante.

Générer une clé avec ssh-keygen

La méthode recommandée pour un nouvel usage est l’algorithme Ed25519. Dans le terminal, lancez :

ssh-keygen -t ed25519 -C "[email protected]"

Remplacez l’adresse par celle associée à votre compte GitHub. Le commentaire sert à identifier la clé ; il ne constitue pas une preuve de votre identité. Vous pouvez aussi mettre une autre adresse si vous le souhaitez.

Le programme vous demande ensuite où enregistrer la clé. Pour l’emplacement proposé par défaut, appuyez sur Entrée. Les fichiers seront placés dans le dossier ~/.ssh. Si une clé portant le même nom existe déjà, prenez le temps de choisir un autre nom plutôt que de l’écraser.

Ensuite, ssh-keygen vous propose de définir une phrase secrète, aussi appelée phrase de passe. C’est une protection supplémentaire de la clé privée. Vous pouvez en choisir une robuste, puis la saisir une seconde fois pour confirmation. Si vous préférez ne pas en définir, appuyez sur Entrée aux deux demandes, mais votre clé privée sera alors moins bien protégée en cas d’accès à votre ordinateur.

À la fin, le terminal confirme l’emplacement des fichiers créés. Vous pouvez aussi voir une empreinte de la clé : c’est un identifiant qui permet de la distinguer, pas le contenu de la clé publique à copier dans GitHub.

Et si Ed25519 n’est pas disponible ?

Sur un système très ancien, l’option Ed25519 peut ne pas être prise en charge. Dans ce cas, vous pouvez générer une clé RSA de 4096 bits :

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Utilisez cette solution de remplacement uniquement si nécessaire. Pour un ordinateur récent, Ed25519 est généralement le choix le plus simple. Dans les deux cas, pensez à protéger votre clé privée avec une phrase secrète.

Ajouter la clé publique à GitHub

Il faut maintenant copier la clé publique, et non la clé privée. Sur macOS ou Linux, affichez son contenu avec :

cat ~/.ssh/id_ed25519.pub

Sous Windows avec Git Bash, la même commande convient si vous avez utilisé le chemin par défaut. Sélectionnez et copiez toute la ligne affichée. Elle commence habituellement par ssh-ed25519 et se termine par le commentaire défini lors de la création.

Vous pouvez aussi copier la clé directement dans le presse-papiers. Sur macOS :

pbcopy < ~/.ssh/id_ed25519.pub

Dans Git Bash sous Windows :

clip < ~/.ssh/id_ed25519.pub

Sur Linux, la commande dépend de votre environnement de bureau ; à défaut, affichez le contenu avec cat, puis copiez-le manuellement. Vérifiez bien que vous copiez le fichier qui finit par .pub. La confusion entre les deux fichiers est une petite erreur, mais elle a le mauvais goût de transformer une étape de configuration en incident de sécurité.

Sur GitHub, ouvrez les paramètres de votre compte, puis la section consacrée aux clés SSH et GPG. Choisissez l’ajout d’une nouvelle clé SSH, donnez-lui un titre explicite — par exemple « Portable personnel » ou « Ordinateur du bureau » — et collez la clé publique dans le champ prévu. Validez l’ajout. GitHub peut vous demander de confirmer votre identité.

Un titre clair vous aidera à retrouver la bonne clé plus tard. Si vous changez d’ordinateur ou perdez un appareil, vous pourrez repérer et supprimer la clé qui lui correspond sans toucher aux autres.

Charger la clé dans l’agent SSH

Un agent SSH peut garder votre clé prête à l’emploi pendant votre session. C’est particulièrement utile si vous avez choisi une phrase secrète : vous la saisissez au chargement de la clé, plutôt qu’à chaque connexion.

Sur macOS ou Linux, démarrez l’agent dans le terminal avec :

eval "$(ssh-agent -s)"

Ajoutez ensuite votre clé :

ssh-add ~/.ssh/id_ed25519

Si vous avez créé une clé RSA ou choisi un autre nom de fichier, adaptez le chemin. L’agent peut vous demander la phrase secrète définie précédemment.

Sur macOS, pour enregistrer la clé dans le trousseau du système, vous pouvez utiliser :

ssh-add --apple-use-keychain ~/.ssh/id_ed25519

La disponibilité de cette option dépend de la version du système. Si elle n’est pas reconnue, utilisez la commande ssh-add classique.

Avec Git Bash sous Windows, l’agent peut être démarré ainsi :

eval "$(ssh-agent -s)"

Puis ajoutez la clé avec ssh-add ~/.ssh/id_ed25519. Selon la configuration de Windows, vous pouvez également utiliser l’agent SSH intégré au système. L’essentiel est que la clé chargée corresponde bien à celle dont la clé publique a été ajoutée à GitHub.

Tester la connexion à GitHub

Le moment du contrôle qualité : dans le terminal, exécutez :

ssh -T [email protected]

Lors de la première connexion, SSH peut vous demander si vous faites confiance à l’hôte GitHub. Vérifiez que l’empreinte affichée correspond aux empreintes publiées par GitHub, puis confirmez si tout est conforme. Ensuite, vous devriez recevoir un message indiquant que l’authentification a réussi. GitHub précise également que l’accès par SSH ne fournit pas un terminal interactif ; c’est normal, vous ne vous êtes pas trompé de porte.

Si le message indique que l’authentification a échoué, vérifiez que la clé publique est bien enregistrée sur le compte GitHub attendu et que la clé privée correspondante est chargée. Vous pouvez afficher les clés actuellement gérées par l’agent avec :

ssh-add -l

Si aucune identité n’est affichée, ajoutez votre clé avec ssh-add, puis relancez le test. Vérifiez également le nom du fichier : une clé créée sous un nom personnalisé ne sera pas automatiquement trouvée si vous indiquez le chemin par défaut.

Utiliser l’adresse SSH pour vos dépôts

Une clé SSH ne change pas automatiquement l’adresse de vos dépôts Git. Pour cloner un projet avec SSH, choisissez l’adresse SSH affichée sur la page du dépôt GitHub. Elle ressemble à ceci :

[email protected]:nom-du-compte/nom-du-depot.git

Vous pouvez ensuite cloner le dépôt avec :

git clone [email protected]:nom-du-compte/nom-du-depot.git

Si vous avez déjà cloné le dépôt en HTTPS, vous pouvez remplacer son adresse distante sans le télécharger à nouveau :

git remote set-url origin [email protected]:nom-du-compte/nom-du-depot.git

Pour vérifier l’adresse configurée :

git remote -v

À partir de là, les commandes Git habituelles, comme git pull et git push, utilisent SSH pour ce dépôt.

Quelques habitudes qui évitent les ennuis

  • Ne partagez jamais votre clé privée et ne l’ajoutez pas à un dépôt Git, même privé.
  • Ajoutez à GitHub uniquement le contenu du fichier public, celui qui porte l’extension .pub.
  • Utilisez une phrase secrète pour protéger la clé privée, surtout sur un ordinateur portable.
  • Donnez un nom identifiable à chaque clé ajoutée à GitHub et supprimez celles qui ne sont plus utilisées.
  • En cas de doute sur une clé exposée, retirez-la de GitHub et générez une nouvelle paire.

Une clé SSH bien configurée, c’est un petit réglage qui vous fera gagner du temps à chaque échange avec GitHub. Et si vous deviez retenir une seule chose : la clé publique voyage, la clé privée reste chez vous. Votre futur vous, celui qui pousse son code sans retaper son mot de passe, vous remerciera.