我遇到了一些麻烦,让两个不同的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
使用多个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
我花了很多时间来理解所有的步骤。让我们一步一步来描述:
使用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。
一个很好的教程。
不要惹主人
我最近不得不这么做,不得不筛选所有这些答案和他们的评论,最终把信息拼凑在一起,所以我把它们都放在这里,在一个帖子里,为了你的方便:
步骤1:ssh密钥
创建任何你需要的键盘。在这个例子中,我将我的default/original命名为'id_rsa'(这是默认的),而我的新命名为'id_rsa-work':
ssh-keygen -t rsa -C "stefano@work.com"
步骤2:ssh config
通过创建/修改~/.ssh/config设置多个ssh配置文件。注意'Host'值略有不同:
# Default GitHub
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
# Work GitHub
Host work.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_work
步骤3:ssh-add
你不一定要这么做。要检查,运行以下命令列出身份指纹:
$ ssh-add -l
2048 1f:1a:b8:69:cd:e3:ee:68:e1:c4:da:d8:96:7c:d0:6f stefano (RSA)
2048 6d:65:b9:3b:ff:9c:5a:54:1c:2f:6a:f7:44:03:84:3f stefano@work.com (RSA)
如果你的条目不在那里,那么运行:
ssh-add ~/.ssh/id_rsa_work
第四步:测试
为了测试你是否正确地做了这些,我建议你快速检查一下:
$ ssh -T git@github.com
Hi stefano! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@work.github.com
Hi stefano! You've successfully authenticated, but GitHub does not provide shell access.
注意,你必须根据你想要使用的密钥/身份来改变主机名(github / work.github)。但是现在你应该可以出发了!:)