GitHub用户,
我是github上的新手,并且在git setup方面遇到了一些问题。 我在github上有2个不同用户的帐号,我在我的系统上安装了2次
首先 /。ssh 文件夹(像往常一样)(包含首先复制的id_rsa 帐号)
第二个 /.ssh / new 文件夹(包含复制的id_rsa) 第二个帐户)
现在在推送时如何在ssh键之间切换?
因为如果我想推送第二个帐户,它将使用.ssh键而不是.ssh / new并且给我错误。
如果我在这里理解错误,请告诉我。
感谢。
答案 0 :(得分:47)
(我已经投票决定将其作为可能的副本关闭,但我还是可以添加一个类似的答案。)
使用SSH传输时,GitHub会根据您用于进行身份验证的SSH密钥将您识别为用户。因此,您需要确保git对一个存储库使用一个SSH密钥而另一个存储库使用另一个SSH密钥。
我将假设:
user1
的GitHub帐户,并且您已向该帐户添加了与您的本地私钥/home/whoever/.ssh/id_rsa
对应的公钥。假设您有兴趣以user1
身份访问的存储库在GitHub上为user1/whatever
。user2
的GitHub帐户,并且您已向该帐户添加了与您的本地私钥/home/whoever/.ssh/new/id_rsa
对应的公钥。假设您有兴趣以user2
身份访问的存储库在GitHub上为user2/whatever
。处理此问题的最简单方法是为每个存储库创建一个新的“远程”(即远程存储库的昵称),其中每个远程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