如何使用多个ssh密钥

时间:2012-01-19 10:08:30

标签: git github ssh-keys

GitHub用户,

我是github上的新手,并且在git setup方面遇到了一些问题。 我在github上有2个不同用户的帐号,我在我的系统上安装了2次

  

首先 /。ssh 文件夹(像往常一样)(包含首先复制的id_rsa   帐号)
第二个 /.ssh / new 文件夹(包含复制的id_rsa)   第二个帐户)

现在在推送时如何在ssh键之间切换?

因为如果我想推送第二个帐户,它将使用.ssh键而不是.ssh / new并且给我错误。

如果我在这里理解错误,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:47)

(我已经投票决定将其作为可能的副本关闭,但我还是可以添加一个类似的答案。)

使用SSH传输时,GitHub会根据您用于进行身份验证的SSH密钥将您识别为用户。因此,您需要确保git对一个存储库使用一个SSH密钥而另一个存储库使用另一个SSH密钥。

我将假设:

  1. 您有一个名为user1的GitHub帐户,并且您已向该帐户添加了与您的本地私钥/home/whoever/.ssh/id_rsa对应的公钥。假设您有兴趣以user1身份访问的存储库在GitHub上为user1/whatever
  2. 您有第二个名为user2的GitHub帐户,并且您已向该帐户添加了与您的本地私钥/home/whoever/.ssh/new/id_rsa对应的公钥。假设您有兴趣以user2身份访问的存储库在GitHub上为user2/whatever
  3. 处理此问题的最简单方法是为每个存储库创建一个新的“远程”(即远程存储库的昵称),其中每个远程URL中的主机名实际上是您设置的别名在~/.ssh/config。 (如果该配置文件不存在,则必须创建它。)

    例如,~/.ssh/config文件中的一个条目可能如下所示:

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

    然后您可以添加名为gh-user1的遥控器,例如:

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

    ...然后如果您想使用master键将user1/whatever分支推送到GitHub上的存储库~/.ssh/id_rsa,您可以这样做:

    git push gh-user1 master
    

    为了将其他用户(user2)推送到第二个存储库,您需要为~/.ssh/config文件添加第二个别名。例如:

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

    然后以不同的用户身份推送到第二个存储库,您可以这样做:

    git push gh-user2 master