Vous êtes sur la page 1sur 21

Comment générer des clés SSH

pour GitHub

Downloaded on: 25 February 2023


Git et GitHub sont des outils essentiels pour tout développeur. Ils sont largement utilisés dans
presque tous les types de projets de développement de logiciels.

Il existe d’autres services d’hébergement Git comme Gitlab et Bitbucket, mais GitHub est le
choix le plus populaire auprès des développeurs. Vous pouvez même modifier votre profil
pour paraître plus attrayant aux yeux des recruteurs.

Vous pouvez utiliser Git et GitHub pour organiser vos projets, collaborer avec d’autres
développeurs et – bien sûr – sur Kinsta.

Mais comme Git et GitHub sont des outils similaires mais différents, vous devez constamment
mettre à jour votre flux de travail avec chacun d’eux.

Nous vous recommandons d’utiliser des clés SSH pour chacune de vos machines. Ainsi,
dans ce tutoriel, vous apprendrez ce qu’elles sont, certains de leurs avantages, et comment
générer et configurer les clés SSH de GitHub.

C’est parti !

Que sont les clés SSH ?


En termes simples, les clés SSH sont des informations d’identification utilisées pour le
protocole SSH (Secure Shell) afin de permettre un accès sécurisé à des ordinateurs distants
via Internet. Habituellement, cette authentification se fait dans un environnement de ligne de
commande.

Ce protocole est basé sur une architecture client-serveur, ce qui signifie que vous, en tant
qu’utilisateur (ou « client »), devez utiliser un logiciel spécial, appelé client SSH, pour vous
connecter à un serveur distant et exécuter des commandes. C’est essentiellement ce que
vous faites lorsque vous vous authentifiez à GitHub via un terminal.
— Push Git.

Mais SSH n’est pas seulement utilisé pour GitHub. Il est largement utilisé par d’autres
plateformes comme Kinsta, Google Cloud et Amazon Web services pour créer un canal
sécurisé d’accès à leurs services.

Maintenant, pour savoir comment les clés SSH fonctionnent réellement, vous devez
comprendre les différences entre les clés publiques et privées.

Clés publiques et privées

Commençons par les bases.

Le protocole SSH utilise une technique de cryptographie appelée cryptage asymétrique. Ce


terme peut sembler compliqué et bizarre, mais rien n’est moins vrai.

Fondamentalement, le cryptage asymétrique est un système qui utilise une paire de clés, à
savoir des clés publiques et privées.

Comme vous pouvez le deviner, la clé publique peut être partagée avec n’importe qui. Son
principal objectif est de chiffrer les données, en convertissant le message en code secret ou
en texte chiffré. Cette clé est généralement envoyée à d’autres systèmes – par exemple, des
serveurs – pour crypter les données avant de les envoyer sur Internet.
D’autre part, la clé privée est celle que vous devez garder pour vous. Elle est utilisée pour
décrypter les données cryptées avec votre clé publique. Sans elle, il est impossible de
décoder vos informations cryptées.

Cette méthode vous permet, ainsi qu’au serveur, de conserver un canal de communication
sûr pour transmettre les informations.

Voici ce qui se passe en arrière-plan lorsque vous vous connectez à un serveur via SSH :

1. Le client envoie la clé publique au serveur.


2. Le serveur demande au client de signer un message aléatoire crypté avec la clé
publique en utilisant la clé privée.
3. Le client signe le message et transmet le résultat au serveur.
4. Une connexion sécurisée est établie entre le client et le serveur.

Il est important de garder vos clés privées en sécurité et de ne les partager en aucun cas
avec personne. Elles sont littéralement la clé de toutes les informations qui vous sont
envoyées.

Utilisation des clés SSH avec GitHub


Depuis le 13 août 2021, Github n’accepte plus l’authentification par mot de passe pour l’accès
à la ligne de commande. Cela signifie que vous devez désormais vous authentifier via un
jeton d’accès personnel ou utiliser une clé SSH (un peu plus pratique).

Voici ce qui se passe lorsque vous essayez de vous authentifier avec votre mot de passe
GitHub par HTTP dans un terminal :

Username for 'https://github.com': yourusername

Password for 'https://yourusername@github.com':


remote: Support for password authentication was removed on August 13, 2021

remote: Please see https://github.blog/2020-12-15-token-authentication-req

fatal: Authentication failed for 'https://github.com/yourusername/reposito

GitHub a besoin de votre clé publique pour vous autoriser à modifier l’un de vos dépôts via
SSH.

Voyons comment vous pouvez générer des clés SSH localement.

Comment générer des clés SSH localement

Maintenant que vous comprenez un peu le protocole SSH et les différences entre les clés
publiques et privées, il est temps de configurer le canal SSH sécurisé entre votre machine et
vos dépôts GitHub.

Avant d’aller plus loin, vous devriez déjà avoir un compte GitHub et un terminal/une invite de
commande avec Git installé sur votre système. Si vous êtes sous Windows, assurez-vous
d’avoir installé Git bash, qui intègre tous les outils dont vous aurez besoin pour suivre ce
tutoriel.

Le client OpenSSH est le logiciel open source le plus populaire utilisé pour se connecter via
SSH. Vous n’aurez pas à vous soucier de votre système d’exploitation car il est installé par
défaut sur Linux, macOS et Windows 10.

Vous devez lancer une invite de commande sur Windows ou un terminal sur les systèmes
basés sur Unix pour générer des clés SSH locales. En général, vous pouvez le faire en
recherchant « terminal », « cmd » ou « powershell » dans votre panneau d’applications, puis
en cliquant sur l’icône qui s’affiche.
— Recherche de l’application Terminal.

Info

Si vous utilisez Linux, la plupart des distributions ont le raccourci Ctrl +


Alt + T pour ouvrir un terminal.

Après avoir fait cela, vous devriez avoir une fenêtre similaire à l’image suivante.
— Application Terminal.

Exécutez la commande suivante pour générer une paire de clés SSH locales :

ssh-keygen -t ed25519 -C "kinstauser@kinsta.com"

Il est temps de vous dire un secret : Personne ne peut vraiment se souvenir de cette
commande ! La plupart des développeurs doivent la chercher sur Google à chaque fois car :

1. Il s’agit d’une commande vraiment longue, avec des chiffres oubliables et aléatoires.
2. Nous l’utilisons rarement, donc cela ne vaut pas la peine de la mémoriser la plupart du
temps.

Cependant, il est important de comprendre chaque commande que nous introduisons dans
nos terminaux, alors voyons ce que signifie chaque partie de celle-ci.
ssh-keygen : L’outil en ligne de commande utilisé pour créer une nouvelle paire de clés
SSH. Vous pouvez voir ses drapeaux avec ssh-keygen help
–t ed25519 : L’indicateur -t est utilisé pour indiquer l’algorithme utilisé pour créer la
signature numérique de la paire de clés. Si votre système le prend en charge, ed25519
est le meilleur algorithme que vous pouvez utiliser pour créer des paires de clés SSH.
-C « email » : Le drapeau -c est utilisé pour fournir un commentaire personnalisé à la
fin de la clé publique, qui est généralement l’email ou l’identification du créateur de la
paire de clés.

Après avoir saisi la commande dans votre terminal, vous devrez saisir le fichier dans lequel
vous souhaitez enregistrer les clés. Par défaut, il est situé dans votre répertoire personnel,
dans un dossier caché nommé « .ssh », mais vous pouvez le changer pour ce que vous
voulez.

Il vous sera ensuite demandé une phrase de passe à ajouter à votre paire de clés. Cela
ajoute une couche supplémentaire de sécurité si, à tout moment, votre appareil est
compromis. Il n’est pas obligatoire d’ajouter une phrase de passe, mais c’est toujours
recommandé.

Voici à quoi ressemble l’ensemble du processus :


— Commande ssh-keygen.

Comme vous pouvez le voir, cette commande génère deux fichiers dans le répertoire que
vous avez sélectionné (généralement ~/.ssh) : la clé publique avec l’extension .pub, et la clé
privée sans extension.

Nous vous montrerons plus tard comment ajouter la clé publique à votre compte GitHub.

Ajouter la clé SSH à ssh-agent

Le programme ssh-agent fonctionne en arrière-plan, conserve vos clés privées et vos


phrases de passe en toute sécurité, et les tient prêtes à être utilisées par ssh. C’est un
excellent utilitaire qui vous évite de saisir votre phrase de passe à chaque fois que vous
voulez vous connecter à un serveur.

Pour cette raison, vous allez ajouter votre nouvelle clé privée à cet agent. Voici comment :

1. Assurez-vous que ssh-agent fonctionne en arrière-plan.


eval `ssh-agent`
# Agent pid 334065

Si vous obtenez un message similaire à celui-ci, tout va bien. Cela signifie que ssh-
agent s’exécute sous un identifiant de processus (PID) particulier.

2. Ajoutez votre clé privée SSH (celle sans extension) à ssh-agent.

ssh-add ~/.ssh/kinsta_keys

Remplacez kinsta_keys par le nom de votre clé SSH. Si c’est la première clé que vous
avez créée, elle doit être nommée « id_algorithm_used » par exemple, id_ed25519.

Ajouter la clé SSH au compte GitHub

L’étape finale consiste à ajouter votre clé publique à votre compte GitHub. Suivez simplement
ces instructions :

1. Copiez votre clé publique SSH dans votre presse-papiers. Vous pouvez ouvrir le fichier
où elle se trouve avec un éditeur de texte et la copier, ou utiliser le terminal pour afficher
son contenu.
cat ~/.ssh/kinsta_keys.pub
# ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJl3dIeudNqd0DPMRD6OIh65tjkxFNOt

2. Connectez-vous à GitHub et allez dans la section supérieure droite de la page, cliquez


sur votre photo de profil, et sélectionnez Settings

Réglages GitHub.

3. Ensuite, dans vos réglages de profil, cliquez sur SSH and GPG keys.
— Clés SSH et GPG.
4. Cliquez sur le bouton New SSH key.

— Bouton de nouvelle clé SSH.

5. Donnez un titre à votre nouvelle clé SSH sur GitHub – généralement, l’appareil à partir
duquel vous utiliserez cette clé. Puis collez la clé dans la zone Key.
— Formulaire d’ajout d’une nouvelle clé SSH

6. Ajoutez votre clé SSH.

— Bouton Ajouter une clé SSH.


Tester la connexion SSH avec un Repo Push

Il est temps de tester tout ce que vous avez fait jusqu’à présent. Vous allez modifier,
commiter et pousser vers l’un de vos dépôts existants en utilisant SSH pour vous assurer que
votre connexion est correctement configurée.

Pour notre exemple, nous allons modifier le site HTML simple que nous avons créé dans
notre tutoriel Git pour le développement web.

Tout d’abord, nous devrons cloner le dépôt sur notre machine locale. Nous pouvons nous
rendre sur la page du dépôt sur GitHub et copier l’adresse SSH qu’elle fournit.

— Commande SSH clone.

Ensuite, clonez le repo en utilisant le terminal :


git clone git@github.com:DaniDiazTech/HTML-site.git

Maintenant, ajoutons une simple balise <h1> dans le fichier index.html:

...
<div class="container my-2">
<h1 class="text-center">A new title!<h1>
</div>

<div class="container my-3">


...

— Le site HTML simple.

Nous ne touchons à aucun JavaScript ou CSS pour garder ce montage simple. Mais si vous
êtes habile avec JavaScript, vous pourriez trouver une place chez Kinsta. Vérifiez les
compétences de code dont vous avez besoin pour faire partie de l’équipe Kinsta.
Après avoir fait cela, livrez les changements :

git commit -am "Added a simple title"

Et poussez-les dans GitHub comme vous le feriez normalement.

git push

Si tout s’est bien passé, félicitations ! Vous venez de configurer une connexion SSH entre
votre machine et GitHub.

Gérer plusieurs clés SSH pour différents comptes GitHub

Si vous avez plusieurs comptes GitHub – disons un pour vos projets personnels et un pour
votre travail – il est difficile d’utiliser SSH pour les deux. Vous auriez normalement besoin de
machines séparées pour vous authentifier à différents comptes GitHub.

Mais ce problème peut être résolu facilement en configurant le fichier de configuration SSH.

Entrons dans le vif du sujet.

1. Créez une autre paire de clés SSH, et ajoutez-la à votre autre compte GitHub. Gardez à
l’esprit le nom du fichier auquel vous attribuez la nouvelle clé.
ssh-keygen -t ed25519 -C "work@email.com"

2. Créez le fichier de configuration SSH. Le fichier de configuration indique au programme


SSH comment il doit se comporter. Par défaut, le fichier de configuration peut ne pas
exister, alors créez-le dans le dossier .ssh/ :

touch ~/.ssh/config

3. Modifiez le fichier de configuration SSH. Ouvrez le fichier de configuration et collez le


code ci-dessous :

#Your day-to-day GitHub account

Host github.com
HostName github.com
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes

# Work account
Host github-work
HostName github.com
IdentityFile ~/.ssh/work_key_file
IdentitiesOnly yes
Maintenant, chaque fois que vous devez vous authentifier via SSH en utilisant votre compte
professionnel ou secondaire, vous modifiez un peu l’adresse SSH du repo, de :

git@github.com:workaccount/project.git

…à :

git@github-work:workaccount/project.git

Résumé
Félicitations – vous avez appris la plupart des connaissances pratiques dont vous avez
besoin pour vous connecter à GitHub via SSH !

Ce tutoriel a abordé la nécessité du protocole SSH, les différences entre les clés publiques et
privées, la façon de générer des clés, de les ajouter à GitHub, et même de gérer plusieurs
clés SSH pour différents comptes GitHub. Gardez à l’esprit qu’à moins que vous ne vouliez
perdre l’accès à tout, votre clé privée doit rester ainsi : privée.

Avec ces connaissances, vous êtes maintenant prêt à développer un flux de travail sans faille
avec Git et GitHub. Continuez à coder !

Vous aimerez peut-être aussi