CentraleSupélecDépartement informatique
Plateau de Moulon
3 rue Joliot-Curie
F-91192 Gif-sur-Yvette cedex
1CC1000 - Systèmes d'Information et Programmation - Devoir à la maison : Configuration des clés SSH sur GitLab

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.