Comment utiliser une clé SSH privée différente pour les commandes Git Shell
Utiliser des clés SSH est plus sécurisé que les mots de passe, et cela s'applique également à Git. Cependant, contrairement à un mot de passe, il est plus difficile de changer votre clé SSH ou de gérer plusieurs clés. En modifiant votre configuration SSH, vous pouvez cependant vous connecter à plusieurs dépôts Git avec des clés différentes.
Comment SSH fonctionne-t-il avec Git ?
Git n'utilise pas seulement votre clé privée pour s'authentifier lorsque vous utilisez SSH au lieu de HTTPS---il établit en fait une réelle connexion SSH au serveur distant. Il le fait silencieusement, donc vous ne serez peut-être pas au courant des commandes qu'il exécute, mais il utilise ssh en coulisses.
Parce qu'il utilise votre commande ssh par défaut, cela agira comme si vous l'aviez exécutée vous-même et utilisera votre clé par défaut.
~/.ssh/id_rsa. Cela n'est probablement pas ce que vous voulez si vous êtes ici à lire ceci, donc pour le changer, vous devrez modifier la configuration de SSH---pas celle de Git.
Créer une nouvelle clé SSH
Vous en aurez besoin pour faire cela en premier lieu, et le faire est assez facile. Il suffit de lancer
ssh-keygenet spécifiez un nouveau nom de clé avec le
-fdrapeau. Cela créera une clé privée et une clé publique avec le
.pubextension.
ssh-keygen -t rsa -f ~/.ssh/githubÉdition de ~/.ssh/config
Le fichier de configuration de SSH permet de définir des "Hôtes" qui seront associés en fonction de ce à quoi vous vous connectez et permettra la modification du fichier utilisé par ssh.
Host github
Hostname github.com
IdentityFile ~/.ssh/id_rsa.github
IdentitiesOnly yes
Cela vous permettra d'utiliser une clé SSH différente de votre clé principale pour toutes les requêtes allant à github.com, mais que faire si vous voulez utiliser deux clés différentes pour des dépôts Git séparés ? Par exemple, une pour votre compte de travail et une pour votre compte personnel.
Eh bien, vous devrez définir deux configurations avec des noms différents, en utilisant le même hôte :
Host personal
Hostname github.com
IdentityFile ~/.ssh/githubpersonal
IdentitiesOnly yes
Host work
Hostname github.com
IdentityFile ~/.ssh/githubwork
IdentitiesOnly yes
Habituellement, cela entraînerait une configuration conflictuelle, mais Git offre une solution. Si vous avez un dépôt distant comme Github lié à votre dépôt local, supprimez-le :
git remote remove originEnsuite, au lieu d'ajouter github.com comme distant, remplacez-le par le nom de l'hôte dans le fichier de configuration SSH. Git le reconnaîtra et utilisera cet hôte SSH pour se connecter. Vous pouvez définir des hôtes séparés par dépôt.
git remote add origin git@personal:username/repository.gitSurcharge manuelle
Si vous ne voulez pas vous embêter avec la configuration SSH, ou si vous souhaitez simplement la remplacer temporairement, Git fournit également la variable d'environnement GIT_SSH_COMMAND. Vous pouvez
GIT_SSH_COMMAND='ssh -i ~/.ssh/github -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'Toutes les commandes Git que vous exécuterez par la suite dans la même session de shell utiliseront cette commande SSH au lieu de celle par défaut. Vous pouvez également définir un binaire SSH complètement différent avec GIT_SSH.
