267 votes

Plusieurs GitHub Comptes et SSH Config

Je vais avoir des difficultés à obtenir deux différents clés SSH/GitHub comptes à bien jouer ensemble. J'ai la configuration suivante:

Repos accessible à partir d'un compte à l'aide de git@github.com:accountname Repos accessible à partir d'un autre compte à l'aide de git@github.com:anotheraccount

Chaque compte possède sa propre clé SSH. Les deux clés SSH ont été ajoutés et j'ai créé un fichier de config. Je ne crois pas que le fichier de configuration est correcte. Je ne suis pas tout à fait sûr de la façon de spécifier que les pensions de titres accessibles à l'aide de git@github.com:accountname devrait utiliser id_rsa et git@github.com:anotheraccount devrait utiliser id_rsa_anotheraccount.

334voto

Jim Wrubel Points 1451

Andy Lester la réponse est exacte, mais j'ai trouvé une importante étape supplémentaire j'avais besoin de faire pour obtenir que cela fonctionne. En essayant d'obtenir deux profils: l'un personnel et l'autre pour le travail, mon ~/.ssh/config a été à peu près comme suit:

Host me.github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/me_rsa

Host work.github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/work_rsa

Mon profil de travail n'a pas pris jusqu'à ce que j'ai fait une ssh-add ~/.ssh/work.rsa. Après que les connexions à github utilisé le bon profil. Auparavant, ils sont par défaut à la première clé publique.

185voto

stefano Points 901

J'ai récemment eu à faire et à passer au crible toutes ces réponses et de leurs commentaires, éventuellement, de la pièce, les informations ensemble, donc je vais mettre tout cela ici, dans un post, pour plus de commodité:


Étape 1: les clés ssh
Créer toutes les paires de clés dont vous aurez besoin. Dans cet exemple, j'ai nommé moi par défaut/original "id_rsa" (qui est la valeur par défaut) et mon nouveau 'id_rsa-travail":

ssh-keygen -t rsa -C "stefano@work.com"


Étape 2: config ssh
Configurer plusieurs ssh profils en créant/modifiant ~/.ssh/config. Note légèrement différentes 'Host' valeurs:

# Default GitHub
Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa

# Work GitHub
Host work.github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_work


Étape 3: ssh-add
Vous peut ou peut ne pas avoir à le faire. Pour le vérifier, liste d'identité, les empreintes digitales en cours d'exécution:

$ ssh-add -l
2048 1f:1a:b8:69:cd:e3:ee:68:e1:c4:da:d8:96:7c:d0:6f stefano (RSA)
2048 6d:65:b9:3b:ff:9c:5a:54:1c:2f:6a:f7:44:03:84:3f stefano@work.com (RSA)

Si vos entrées ne sont pas là, puis exécutez:

ssh-add ~/.ssh/id_rsa_work


Étape 4: test de
Pour tester vous l'avez fait tout correctement, je suggère ce qui suit vérification rapide:

$ ssh -T git@github.com
Hi stefano! You've successfully authenticated, but GitHub does not provide shell access.

$ ssh -T git@work.github.com
Hi stefano! You've successfully authenticated, but GitHub does not provide shell access.

Notez que vous aurez à changer le nom d'hôte (github / travail.github) en fonction de ce que la clé/identité que vous souhaitez utiliser. Mais maintenant, vous devriez être bon d'aller! :)

19voto

Andy Lester Points 34051

Utiliser l' IdentityFile paramètre dans votre ~/.ssh/config:

Host github.com
    HostName github.com
    IdentityFile ~/.ssh/github.rsa
    User petdance

8voto

radesix Points 2493

J'ai trouvé la réponse ici:

http://help.github.com/manage-multiple-clients/

https://gist.github.com/2351996

NOTE: Les liens ont été mis à jour et fonctionnent comme des 7/25/12

2voto

David H Points 23654

J'utilise des scripts shell pour me passer à quelque titre que ce soit, je veux être "actif". Essentiellement, vous commencez à partir d'un nouveau départ, d'obtenir un compte configuré correctement et de travail, puis déplacez ces fichiers sur un nom avec le préfixe approprié. À partir de là, vous pouvez utiliser la commande "github", ou "gitxyz" pour passer:

# my github script
cd ~/.ssh
rm id_rsa
rm id_rsa.pub
rm config

ln git_dhoerl id_rsa
ln git_dhoerl.pub id_rsa.pub
ln config_dhoerl config

git config --global user.email "dhoerl@xyz.com"
git config --global github.user "dhoerl"        
git config --global github.token "whatever_it_is"

ssh-add -D

J'ai eu de la chance avec cette. J'ai également créé un exécuter un script dans Xcode (pour les utilisateurs de Mac) de sorte qu'il ne serait pas construire mon projet si je n'avais pas le bon réglage (depuis son à l'aide de git):

Exécuter le Script placé après les Dépendances:

#! /bin/ksh
if [ "$(git config --global --get user.email)" != "dhoerl@<company>.com" ]
then
    exit 1
fi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X