web-dev-qa-db-fra.com

Basculer entre plusieurs clés ssh dans Git sous Windows

J'ai besoin de plusieurs clés dans mon client pour accéder à deux comptes différents sur l'hébergement du référentiel. Voir https://redefy.repositoryhosting.com/support -> Comment gérer plusieurs comptes avec plusieurs paires de clés sur mon client?

Je ne comprends pas comment changer entre différentes clés ssh dans Git sous Windows, quelqu'un peut-il m'aider?

40
Tobias Ekblom

Je suppose que vous utilisez git bash et openssh.

Comme ce qui est écrit dans l'article, vous pouvez créer un fichier de configuration pour le client ssh qui répertorie tous vos comptes. Vous pouvez écrire la configuration suivante dans votre propre fichier de configuration du client ssh dans ~/.ssh/config

Host account-one
HostName server.example.com
User user-one
IdentityFile ~/.ssh/key-one

Host account-two
HostName server.example.com
User user-two
IdentityFile ~/.ssh/key-two

Ce que cela signifie, c'est que vous définissez deux types d'alias d'hôte nommés account-one et account-two. Si vous les utilisez, lors de l'établissement de la connexion, le client ssh utilisera les HostName, User et IdentityFile correspondants pour l'adresse du serveur, le nom d'utilisateur et le fichier de clé ssh. Avec cela, vous pouvez les utiliser pour accéder à vos comptes et clés, même sur le même serveur.

Dans git, vous pouvez définir deux télécommandes en les utilisant

$ git remote add one account-one:repository.git
$ git remote add two account-two:repository.git

alors vous pouvez pousser vers ces télécommandes

$ git Push one master
$ git Push two master
51
fajran

Quelle clé est utilisée pour quel serveur est géré par le programme SSH que git utilise pour se connecter. Dans la configuration par défaut, il doit s'agir du client SSH en ligne de commande (openSSH?).

En utilisant openSSH, vous pouvez configurer des fichiers de clés particuliers pour des hôtes particuliers dans le ~/.ssh/config fichier:

Host foo.example.com
  IdentityFile ~/.ssh/foo.example.com-id_rsa

Host bar.example.com
  IdentityFile ~/.ssh/bar.example.com-id_rsa

~/.ssh/*.example.com-id_rsa sont les fichiers de clé privée de chaque serveur.

J'espère que ça aide.

13
mamapitufo

Sous Windows, vous devriez essayer Pageant, un agent d'authentification SSH pour PuTTY, PSCP, PSFTP et Plink. Cet outil peut gérer vos clés ssh et ses phrases de passe. Pour l'utiliser avec Git, vous devez installer PuTTY et créer un lien vers le paramètre plink.exe définissant la variable GIT_SSH.

  1. Installez PuTTY et ses amis (http://www.chiark.greenend.org.uk/~sgtatham/PuTTY/download.html)
  2. Définir GIT_SSH

    set GIT_SSH=<path-to-plink.exe>

  3. Démarrez Pageant et ajoutez vos clés
  4. Run Git

hth Daniel

2
Daniel S.

Je vais répondre à cela un peu indirectement. J'ai déjà utilisé git bash et j'ai découvert que lorsque j'utilise git via le shell git bash, il se comporte exactement comme un shell bash pour mac ou linux. Ce qui signifie, lorsque j'utilise git bash, que je peux répondre à votre question comme:

'Si vous utilisez git bash, vous pouvez gérer plusieurs comptes comme vous le feriez si vous étiez sur linux ou mac, en utilisant ssh-agent/ssh-add et amis'

0
sethcall