Cet article fait partie d’une longue série en cours d’écriture consacrée à git.
Utiliser sa clé privée avec git lors des connexions via SSH
Parmi les protocoles supportés par git, on peut citer SSH. Voici les deux syntaxes possibles au niveau des URL, utilisées lors d’un clone, par exemple.
ssh://[user@]host.xz[:port]/path/to/repo.git/
[user@]host.xz:path/to/repo.git/
Il n’existe pas d’option git qui permette de préciser quelle clé privée utiliser pour la connexion.
Il faut savoir que, comme le transport se base sur SSH, on peut donc profiter
de la configuration de ce dernier. Créer le fichier ~/.ssh/config
, et lui
donner les droits appropriés.
mkdir -p ~/.ssh
touch ~/.ssh/config
# ces fichiers sont sensibles, en lecture par le propriétaire uniquement
chmod 700 ~/.ssh
chmod 600 ~/.ssh/config
Éditez-le avec votre éditeur préféré et ajoutez-y le contenu suivant.
Host serveurgit
HostName monserveur.com
User matthieu
Port 22
IdentityFile ~/.ssh/ma_cle
IdentitiesOnly yes
Host
permet de donner un nom court à votre serveur, une sorte d’alias ;HostName
correspond à l’adresse IP ou nom d’hôte du serveur sur lequel se connecter ;User
permet de définir le nom d’utilisateur ;Port
permet de définir le numéro de port ;IdentityFile
est le chemin vers votre clé privée, vous pouvez aller faire un tour sur l’article suivant pour créer votre paire de clés publique et privée ;IdentitiesOnly yes
permet de n’utiliser que la clé privée configurée et pas d’autres éventuellement chargées dans un ssh-agent.
On pourra ainsi faire un git clone
en utilisant l’alias choisi précédemment.
git clone serveurgit:mon_depot.git
Cela marche également avec un git remote
.
git remote add origin serveurgit:mon_depot.git
L’avantage d’utiliser la configuration de SSH, est que l’alias configuré peut
être utilisé avec d’autres outils pouvant utiliser SSH : scp
, sftp
,
rsync
, svn
, etc. Le second intérêt est que l’alias simplifie grandement la
ligne de commande. Le changement de configuration d’un serveur se fait à un
seul endroit et tous les outils utilisant cet alias sont alors impactés par ce
changement, très pratique.