🏳️🌈♿️👩🎨🌱 En février, je remets 3% de mes ventes à des organismes qui favorisent la diversité, les arts et l'environnement 🏳️🌈♿️👩🎨🌱
Manuel d'alchimie du code
SSH sans mot de passe avec git: configuration et usage.
Introduction
Je préfère utiliser git avec le protocole SSH sans mot de passe plutôt que HTTPS. Pour cause, pas besoin de s'authentifier à chaque fois, car on utilise une paire de clés d'authentification. La clé publique est partagée sur le serveur distant, et la clé privée est conservée sur le poste de travail, dans le répertoire ~/.ssh/
.
Il serait facile d'utiliser la même clé SSH id_rsa.pub
partout, puisque c'est la clé par défaut créée pour chaque utilisateur. Cependant, ce n'est pas sécuritaire, ce serait comme utiliser le même mot de passe partout.
On crée donc notre propre clé pour utiliser avec notre gestionnaire de répertoires git distant. Dans mon cas, c'est surtout GitLab que j'utilise. Je crée donc ici une clé pour mon GitLab situé à git.francoispelletier.org.
Git ne détectera pas automatiquement cette clé, et c'est l'objet de la petite procédure que je vais détailler.
Création de la clé SSH sans mot de passe
Pour créer une nouvelle clé SSH, on utilise la commande suivante:
ssh-keygen -f "~/.ssh/gitlab2" -N ""
- Le paramètre
-f
définit le chemin de sauvegarde de la clé privée. La clé publique aura le même chemin, avec.pub
en suffixe. - Le paramètre -N définit le mot de passe de la clé. Ici, il est vide.
Pour utiliser cette clé avec git, il faut configurer un hôte spécial pour ssh. Ceci se fait dans le fichier ~/.ssh/config
. Voici un exemple de configuration tel que celui que j'utilise.
Host gitlab
Hostname git.francoispelletier.org
User git
IdentityFile ~/.ssh/gitlab
- Le Host définir le nom que nous allons ensuite utiliser pour référer à cette configuration
- Le Hostname est le nom de domaine et le chemin d'accès au gestionnaire de répertoires git
- Le User est le nom d'utilisateur utilisé par l'accès SSH au gestionnaire de répertoires git. Il est situé devant le @ dans l'adresse de clone avec SSH. Par exemple, pour l'adresse
git@git.francoispelletier.org:personnel/clone-repos.git
, c'estgit
. - Le IdentityFile, c'est le nom de fichier que nous avons spécifié dans la commande
ssh-keygen
précédente.
Utilisation de la clé SSH sans mot de passe avec git
Maintenant, pour utiliser git, nous n'allons plus utiliser l'adresse fournir par le gestionnaire de répertoires, mais plutôt celle que nous avons spécifiée dans le fichier de configuration précédent.
Au lieu d'utiliser la commande suivante:
git clone git@git.francoispelletier.org:personnel/clone-repos.git
Nous utilisons maintenant celle-ci:
git clone gitlab:personnel/clone-repos.git
Voici le fonctionnement détaillé de cette commande
Fonctionnement interne d'une commande git clone
Pour pousser vers le gestionnaire de répertoires, nous allons pouvoir utiliser la commande habituelle, en spécifiant le nom du remote (origin ici) et le nom de la branche (main
ici).
git push origin main
Références
- https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh
- https://www.redhat.com/sysadmin/passwordless-ssh