我遇到了一些麻烦,让两个不同的SSH密钥/GitHub帐户一起玩得很好。我有以下设置:

使用git@github.com:accountname从一个帐户访问回购

从另一个帐户使用git@github.com:另一个帐户访问回购

每个帐号都有自己的SSH密钥。两个SSH密钥都已经添加,我已经创建了一个配置文件。我不相信配置文件是正确的。我不太确定如何指定使用git@github.com:accountname访问的回购应该使用id_rsa和git@github.com:anotheraccount应该使用id_rsa_anotheraccount。


当前回答

安迪莱斯特的回答是准确的,但我发现我需要做一个重要的额外步骤来让它工作。在尝试设置两个配置文件时,一个用于个人,一个用于工作,我的~/。Ssh /config大致如下:

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

直到我执行ssh-add ~/.ssh/work_rsa,我的工作配置文件才生效。之后,连接到github使用正确的配置文件。以前它们默认使用第一个公钥。

对于使用ssh-add时无法打开到您的身份验证代理的连接,请检查: https://stackoverflow.com/a/17695338/1760313

其他回答

在~/.ssh/config中使用IdentityFile参数:

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

我花了很多时间来理解所有的步骤。让我们一步一步来描述:

使用ssh-keygen -t rsa创建新的身份文件。给它一个替代方案,比如proj1。Id_rsa和命中,因为您不需要密码短语。 在.ssh/config中添加新的section: 主机proj1.github.com 主机名:github.com PreferredAuthentications publickey IdentityFile ~ / . ssh / proj1.id_rsa

考虑第一部分并注意proj1.github.com,我们稍后将回到这一部分。

将标识添加到ssh代理ssh- Add ~/.ssh/proj1.id_rsa 这就是我第一次搞砸的地方-现在当你想克隆一个proj1 repo时,你使用proj1.github.com(正是配置文件中的主机)来做它。 Git克隆git@proj1.github.com。

一个很好的教程。

不要惹主人

一个可能比编辑ssh配置文件更简单的替代方案(正如所有其他答案所建议的那样)是配置一个单独的存储库来使用不同的(例如非默认的)ssh密钥。

在你想要使用不同键的存储库中,运行:

git config core.sshCommand 'ssh -i ~/.ssh/id_rsa_anotheraccount'

如果您的密钥是受密码保护的,并且您不想每次都输入密码,那么您必须将其添加到ssh-agent。下面是ubuntu和macOS的操作方法。

使用全局git配置和条件包含(参见示例),也可以将这种方法扩展到多个存储库。

使用多个Git帐户和克隆而不做任何更改的最简单方法是将您的用户名添加到ssh配置中。

开放的~ / . ssh / config。如果一个人不存在,就去创造 添加主机条目,如下所示

Host github.com:<YOUR_GITHUB_USERNAME>
  AddKeysToAgent yes
  IdentityFile ~/.ssh/<YOUR_SSH_KEY_FILENAME>

将<YOUR_SSH_KEY_FILENAME>替换为您在。ssh文件夹中的密钥文件名(例如:id_ed25519)。 为每个要维护的github帐户添加一条主机记录。

现在git克隆将简单的git克隆github.com:<YOUR_GITHUB_USERNAME>/your-repo.git。克隆时不需要记住自定义gihub域;-)

做了一个主旨与进一步的信息https://gist.github.com/udantha/fed5439630eaf4651272f4fba6e1c6a3

我使用,

Host github.com
   HostName github.com
   IdentityFile ~/.ssh/github_rsa
   User abc@gmail.com

它运行得很好。

对于不同的用户名使用不同的rsa密钥,在.ssh/config文件中使用上述设置。