首页 文章

如何使用多个ssh键[重复]

提问于
浏览
31

这个问题在这里已有答案:

GitHub用户,

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

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

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

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

如果我在这里理解错误,请让我纠正 .

谢谢 .

1 回答

  • 45

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

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

    我会假设:

    • 您有一个名为 user1 的GitHub帐户,并且您已向该帐户添加了与您的本地私钥 /home/whoever/.ssh/id_rsa 对应的公钥 . 让's say that the repository you'有兴趣访问 user1 在GitHub上是 user1/whatever .

    • 您有第二个名为 user2 的GitHub帐户,并且您已向该帐户添加了与您的本地私钥 /home/whoever/.ssh/new/id_rsa 对应的公钥 . 让's say that the repository you'有兴趣访问 user2 在GitHub上是 user2/whatever .

    处理此问题的最简单方法是为每个存储库创建一个新的"remote"(即远程存储库的昵称),其中主机名位于 ~/.ssh/config 中的每个远程's URL is actually an alias that you'中 . (如果该配置文件不能创建它 . )

    例如, ~/.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
    

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

    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
    

相关问题