Lorsque nous avons introduit GitLab, vous deviez saisir votre nom utilisateur et votre mot de passe à chaque fois que vous souhaitiez apporter une modification au dépôt distant. Ceci est dû au fait que nous avons utilisé le protocole HTTPS pour établir la communication avec le serveur GitLab. Cela peut être gênant, surtout pendant les Coding Weeks, où vous utiliserez GitLab tous les jours.
Une alternative qui évite l'utilisation du nom utilisateur et du mot de passe est d'établir une connexion SSH avec le serveur avec une authentification par cryptographie à clé publique. Elle est basée sur l'idée suivante :
- Nous générons une paire de clés SSH, l'une publique et l'autre privée.
- Nous copions la clé publique sur notre compte GitLab, tandis que nous conservons la clé privée en toute sécurité sur notre ordinateur. Les clés privées ne doivent être partagées avec personne .
Lorsque nous saisissons la commande git push
, le client SSH qui tourne sur notre ordinateur tente d'établir une connexion SSH avec le serveur SSH qui tourne sur GitLab. La procédure suivante est exécutée pour nous authentifier (c'est-à-dire pour s'assurer que nous sommes bien ceux que nous prétendons être) :
- Le serveur SSH génère des données aléatoires, qu'on nomme parfois défi (en anglais, challenge), et les crypte en utilisant notre clé publique.
- Le serveur SSH renvoie le défi crypté au client SSH.
- Le client SSH utilise la clé privée correspondante pour décrypter le défi et le renvoie au serveur SSH.
- Le serveur SSH compare le message décrypté reçu par le client avec le défi : s'ils correspondent, nous sommes authentifiés avec succès sans qu'il soit nécessaire de saisir le nom utilisateur et le mot de passe.
Nous expliquons maintenant comment :
1. Générer une paire de clés SSH publique/privée.
2. Ajouter la clé publique à un compte GitLab.
3. Vérifiez que vous pouvez vous connecter.
Générer une paire de clés SSH publiques/privées
Vous pouvez générer une paire de clés SSH comme suit :
- Saisissez la commande
ssh-keygen -t rsa -C "<comment>"
. Remplacez"<comment>"
par une annotation écrite par vous (par exemple, "clés GitLab").rsa
est le nom d'un algorithme cryptographique utilisé pour générer les clés.
- Appuyez sur la touche d'entrée ; vous serez invité à spécifier un fichier dans lequel enregistrer la clé. Appuyez sur la touche d'entrée pour accepter le nom de fichier proposé.
- Si un message vous informe que le nom de fichier existe, vous disposez déjà d'une paire de clés SSH. Choisissez de ne pas écraser le fichier et d'interrompre la procédure.
- Si vous n'avez pas interrompu la procédure à l'étape précédente, vous serez invité à saisir une phrase secrète (en anglais, passphrase).
- La phrase secrète sert à protéger la clé privée contre les utilisations non autorisées. Lorsque vous ouvrez un terminal et que vous établissez une première connexion SSH au serveur GitLab, il vous sera demandé d'entrer la phrase secrète. Tant que vous ne fermez pas votre terminal, la phrase secrète ne sera pas nécessaire pour les connexions SSH successives.
Si vous avez suivi la procédure ci-dessus, vos clés devraient se trouver dans le dossier ~/.ssh
(rappel, ~
est le nom symbolique de votre répertoire personnel). Le fichier ~/.ssh/id_rsa
contient la clé privée ; le fichier ~/.ssh/id_rsa.pub
contient la clé publique.
Ajouter la clé publique à un compte GitLab
Vous devez d'abord copier le contenu du fichier id_rsa.pub
, qui contient la clé publique.
Comment le faire sur Windows
Saisissez la commande suivante dans le terminal (le shell doit être GitBash) :
cat ~/.ssh/id_rsa.pub | clip
Comment le faire sur macOS
Saisissez la commande suivante dans le terminal :
tr -d '\n' < ~/.ssh/id_rsa.pub | pbcopy
Comment le faire sous Linux
Saisissez la commande suivante dans le terminal (vous devez installer le paquet xclip
) :
xclip -sel clip < ~/.ssh/id_rsa.pub
Vous devez maintenant coller la clé publique dans votre compte GitLab, comme suit :
- Connectez-vous à GitLab.
- Dans la barre latérale de gauche, sélectionnez votre avatar. Si la barre latérale n'est pas visible, cliquez sur l'icône à gauche de la phrase Votre travail en haut à gauche.
- Sélectionnez Modifier le profil.
- Dans la barre latérale de gauche, sélectionnez Clés SSH.
- Sélectionnez Ajouter une nouvelle clé.
- Dans la case Clé, collez le contenu de votre clé publique.
- Dans la case Titre, sasissez une description (par exemple, "clés sur mon ordinateur portable").
- En option, vous pouvez mettre à jour la date d'expiration.
- Sélectionnez Ajouter une clé.
Vérifiez que vous pouvez vous connecter
- Saisissez la commande
ssh -T git@gitlab-student.centralesupelec.fr
. - Si vous vous connectez pour la première fois, vous êtes invité à vérifier l'identité du serveur avec une empreinte digitale (en anglais, fingerprint) donnée. Vérifiez si l'empreinte donnée correspond à l'une des empreintes répertoriées dans cette page. Pour cette vérification, rappelez-vous que vous avez utilisé RSA pour générer vos clés SSH.
- Si vous avez vérifié avec succès l'identité du serveur, tapez
yes
(ou,oui
si votre système est en français) dans le terminal et appuyez sur la touche d'entrée. - Tapez à nouveau la commande
ssh -T git@gitlab-student.centralesupelec.fr
. Vous devriez recevoir un message de bienvenue.
En cas de problème, vous pouvez également exécuter la commande SSH en mode verbeux pour obtenir des indices sur ce qui s'est passé :
ssh -Tvvv git@gitlab-student.centralesupelec.fr
.