无法获取多个SSH密钥以用于多个github帐户

时间:2016-10-14 04:06:18

标签: git github ssh

我正在尝试为两个不同的github帐户设置多个ssh密钥,但我似乎无法让它像我一样工作。

目前我有两个ssh密钥,我们将它们称为a_rsa,用于从github.com-a和b_rsa克隆的repos,用于从github.com-b克隆的repos。

我在Ubuntu上,我的所有密钥和配置都位于~/.ssh。我的ssh配置如下所示:

#Account A
Host github.com-a
    HostName github.com
    User git
    IdentityFile ~/.ssh/a_rsa

#Account b
Host github.com-b
    HostName github.com
    User git
    IdentityFile ~/.ssh/b_rsa

我的一个.git/config文件中的示例网址是:

url = git@github.com:a/SomeRepo.git

无论我在尝试推送或拉出主设备时我在哪个回购中,它总是尝试使用密钥b_rsa。

我尝试将每个用户分别更改为ab无效。我不确定我的配置是否被读取,因为我尝试将配置文件设置为:

Host *
    IdentityFile ~/.ssh/a_rsa

我的所有回购仍然尝试使用b_rsa密钥。

我希望它的工作方式是基于我要推送到(所有者ab)的仓库所有者,它会使用相应的密钥,但我不能似乎弄清楚出了什么问题。

2 个答案:

答案 0 :(得分:4)

问题出在存储库的URL中。

您应该使用git存储库网址中的Host而不是Hostname

中的~/.ssh/config

因此,您的存储库.git/config中的网址应为

url = git@github.com-a:a/SomeRepoForUserA.git

OR,

url = git@github.com-b:b/SomeRepoForUserB.git

在提交时使用正确的Github标识

您想要做的另一件事,如果这些存储库的用户名和电子邮件地址不同,那么在提交这些存储库时,您应该使用相应的用户名,电子邮件如下:

git -c user.name="UserA" -c user.email=UserA@blah.com commit -m "Commit done to repository A"

git -c user.name="UserB" -c user.email=UserB@blah.com commit -m "Commit done to repository B"

使用错误的用户名修复提交,发送电子邮件

如果您已经使用不正确的作者和用户提交了提交,则应该使用它来修复它。

 git -c user.name="UserA" -c user.email=UserA@blah.com commit --amend --reset-author

当然,上面只修复了最近的提交。如果有较旧的提交,您可以使用上述命令OR进行交互式变基(git rebase -i),使用 filter-branch

答案 1 :(得分:-1)

尝试

IdentitiesOnly yes

IdentitiesOnly 指定ssh(1)应仅使用ssh_config文件中配置的身份验证标识文件,即使ssh-agent(1)提供更多标识。此关键字的参数必须为“是”或“否”。此选项适用于ssh-agent提供许多不同身份的情况。默认为“否”。