<!--
  canonical-url: https://www.avonture.be/fr/blog/github-connect-using-ssh
  published:     2024-03-09
  This is a static plain-Markdown mirror generated at build time.
  Visit the canonical URL above for the fully rendered page, with images and interactive components.
-->

# GitHub - Connectez votre compte en SSH et travaillez avec le protocole git@

> Sécurisez votre connexion GitHub ! Suivez ce guide pas à pas pour configurer vos clés SSH et utiliser le protocole git@ pour des opérations Git plus sûres et plus rapides.

---
![GitHub - Connectez votre compte en SSH et travaillez avec le protocole git@](/img/v2/github_tips.webp)

**TL;DR**

Cet article explique pourquoi se connecter à GitHub en SSH est plus sûr qu'en HTTPS, puis détaille la mise en place : générer une paire de clés ed25519 avec `ssh-keygen`, l'ajouter à l'agent SSH et coller la clé publique dans les paramètres SSH de GitHub. Il se termine par une commande `ssh -T git@github.com` pour vérifier que la connexion fonctionne, afin que vous puissiez utiliser le protocole `git@` avec `git clone`.

Utiliser SSH plutôt que HTTPS pour se connecter à GitHub est plus sûr. En effet, SSH repose sur la cryptographie à clé publique. Cela rend un accès non autorisé beaucoup plus difficile qu'avec un mot de passe, qui peut être volé par phishing ou par force brute. De plus, HTTPS transmet votre nom d'utilisateur et votre mot de passe (chiffrés) sur le réseau, ce qui peut être intercepté lors d'une attaque de type Man-in-the-Middle (MITM). SSH, lui, ne transmet aucun mot de passe une fois la configuration initiale faite.

Voyons comment ajouter une clé SSH et, dès maintenant, pouvoir travailler avec GitHub via le protocole `git@` avec `git clone`.

Ajouter une clé SSH sur votre ordinateur et l'utiliser pour vous connecter à GitHub est assez simple.

D'abord, lancez la commande ci-dessous sur votre machine. Remplacez `your_email@example.com` par l'adresse e-mail liée à votre compte GitHub existant.

```bash
$ ssh-keygen -t ed25519 -C "your_email@example.com"
```

On vous demandera de saisir une *passphrase* ; ce n'est pas obligatoire, appuyez simplement sur `Enter`.

Vous verrez alors quelque chose comme ceci dans votre console :

```bash
Generating public/private ed25519 key pair.
Enter file in which to save the key (~/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_ed25519
Your public key has been saved in ~/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com
The key's randomart image is:
+--[ED25519 256]--+
| ( ...... )      |
| ( ...... )      |
| ( ...... )      |
| ( ...... )      |
+----[SHA256]-----+
```

Ensuite, il faut ajouter la clé à votre agent SSH. Lancez simplement :

```bash
$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/id_ed25519
```

Enfin, ajoutez la clé à GitHub en vous rendant sur <https://github.com/settings/ssh/new>.

![GitHub - Add SSH key](./images/ssh_add_key.webp)

Donnez un titre clair, par exemple `Home computer`.

Dans la zone de texte `Key`, vous devez coller votre clé **publique**.

Regardez ce qui s'est affiché à l'écran juste avant, lors de l'exécution de la commande `ssh-keygen`. Le chemin de la clé publique y était indiqué ; par exemple, `Your public key has been saved in ~/.ssh/id_ed25519.pub`.

Lancez donc `cat ~/.ssh/id_ed25519.pub` dans votre console Linux et vous obtiendrez la valeur de la clé. Copiez/collez cette ligne dans la page de paramètres GitHub puis cliquez sur le bouton `Add SSH key`.

Enfin, si vous voulez tester que la connexion est bien établie, lancez `ssh -T git@github.com`. Vous devriez obtenir `Hi cavo789! You've successfully authenticated, but GitHub does not provide shell access.` (avec votre propre pseudo, bien sûr).

Deux suites possibles : si vous avez déjà des repositories clonés en HTTPS, [Git - Some tips for your .gitconfig file](/blog/git-config) montre un réglage en une ligne pour forcer SSH globalement sans rien re-cloner ; et le même mécanisme de clé fonctionne pour votre serveur d'hébergement, voir [How to connect to your hosting server using SSH](/blog/connect-using-ssh-to-your-hosting-server).
