web-dev-qa-db-fra.com

Comment travailler avec plusieurs clés SSH

Utilisateurs de GitHub,

Je suis novice sur github et j'ai un problème avec la configuration de git. J'ai 2 comptes avec différents utilisateurs sur github et j'ai configuré git sur mon système 2 fois

Premier /. Ssh dossier (comme d'habitude) (contient id_rsa qui a copié dans le premier compte)
Deuxième /. Ssh/nouvea dossier (contient id_rsa qui a copié dans le deuxième compte)

maintenant au moment de Push, comment puis-je basculer entre les touches ssh?

Parce que si je souhaite pousser pour un deuxième compte, il utilisera la clé .ssh au lieu de .ssh/new et me donnera une erreur.

Veuillez me corriger si je comprends quelque chose de mal ici.

Merci.

32
Arun Rana

(J'ai voté pour fermer ceci en tant que doublon possible, mais je pourrais aussi bien ajouter une réponse similaire.)

Lorsque vous utilisez le transport SSH, GitHub vous identifie en tant qu'utilisateur en fonction de la clé SSH que vous utilisez pour vous authentifier. Vous devez donc vous assurer que git utilise une clé SSH pour un référentiel et une autre pour l'autre.

Je vais supposer que:

  1. Vous disposez d'un compte GitHub appelé user1, et vous avez ajouté à ce compte la clé publique correspondant à votre clé privée locale /home/whoever/.ssh/id_rsa. Supposons que le référentiel auquel vous souhaitez accéder en tant que user1 est user1/whatever sur GitHub.
  2. Vous disposez d'un deuxième compte GitHub appelé user2 et vous avez ajouté à ce compte la clé publique correspondant à votre clé privée locale /home/whoever/.ssh/new/id_rsa. Supposons que le référentiel auquel vous souhaitez accéder en tant que user2 est user2/whatever sur GitHub.

La façon la plus simple de résoudre ce problème est de créer un nouveau "distant" (c'est-à-dire un surnom pour un référentiel distant) pour chaque référentiel, où le nom d'hôte se trouve dans l'URL de chaque télécommande est en fait un alias que vous avez configuré dans ~/.ssh/config. (Si ce fichier de configuration n'existe pas, vous devrez le créer.)

Par exemple, une entrée dans le ~/.ssh/config le fichier pourrait ressembler à:

Host github-as-user1
  HostName github.com
  User git
  IdentityFile /home/whoever/.ssh/id_rsa

Ensuite, vous pouvez ajouter une télécommande appelée gh-user1, disons, avec:

git remote add gh-user1 git@github-as-user1:user1/whatever.git

... puis si vous voulez pousser votre branche master vers le référentiel user1/whatever sur GitHub en utilisant le ~/.ssh/id_rsa clé, vous pouvez simplement faire:

git Push gh-user1 master

Pour pousser en tant que l'autre utilisateur (user2) au deuxième référentiel, vous devez vous ajouter un deuxième alias ~/.ssh/config fichier. Par exemple:

Host gh-as-user2
  HostName github.com
  User git
  IdentityFile /home/whoever/.ssh/new/id_rsa

Ensuite, pour pousser vers ce deuxième référentiel en tant qu'utilisateur différent, vous pouvez simplement faire:

git Push gh-user2 master
47
Mark Longair