Comment utiliser une clé SSH privée différente pour les commandes Git Shell

L'utilisation de clés SSH est plus sécurisée que les mots de passe, et cela s'applique également à Git. Cependant, contrairement à un mot de passe, il est plus difficile de modifier votre clé SSH ou de gérer plusieurs clés. Cependant, en modifiant votre configuration SSH, vous pouvez vous connecter à plusieurs référentiels Git avec différentes clés.

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 véritable connexion SSH avec le serveur distant. Il le fait en silence, vous n'êtes donc peut-être pas au courant des commandes qu'il exécute, mais il utilise ssh sous le capot.

Comme il utilise votre commande ssh par défaut, il agira comme si vous veniez de l'exécuter vous-même et utilisera votre clé par défaut dans ~/.ssh/id_rsa. Ce n'est probablement pas ce que vous voulez si vous êtes ici en train de lire ceci, donc pour le changer, vous devrez modifier la configuration de SSH et non celle de Git.< /p>

Créer une nouvelle clé SSH

Vous en aurez besoin d'un pour le faire en premier lieu, et c'est assez facile. Exécutez simplement ssh-keygen et spécifiez un nouveau nom de clé avec l'indicateur -f. Cela créera une clé privée et une clé publique avec l'extension .pub.

ssh-keygen -t rsa -f ~/.ssh/github

Modification ~/.ssh/config

Le fichier de configuration SSH’s permet de définir “Hosts” qui correspondra en fonction de ce à quoi vous vous connectez et autorisera la modification du fichier utilisé par ssh.

Host github Hostname github.com IdentityFile ~/.ssh/id_rsa.github IdentitiesOnly yes Publicité

Cela vous permettra d'utiliser une clé SSH différente de votre clé principale pour toutes les demandes adressées à github.com, mais que se passe-t-il si vous souhaitez utiliser deux clés différentes pour des référentiels Git distincts ? Par exemple, une pour votre compte professionnel 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ébergeur :

Hébergeur personnel Nom d'hôte github.com IdentityFile ~/.ssh/githubpersonal IdentitiesOnly yes Host work Hostname github.com IdentityFile ~/.ssh/githubwork IdentitiesOnly yes

Cela entraînerait généralement une configuration conflictuelle, mais Git fournit un moyen de contourner ce problème. Si vous avez un référentiel distant comme Github lié à votre référentiel local, supprimez-le :

git remote remove origin

Ensuite, 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 référentiel.

git remote add origin git@personal:username/repository.git

Remplacement manuel

Si vous ne voulez pas jouer avec la configuration SSH, ou si vous voulez 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écutez ensuite dans la même session shell utiliseront ce SSH commande au lieu de celle par défaut. Vous pouvez également définir un binaire SSH entièrement différent avec GIT_SSH.


Posted

in

by

Tags: