我正在尝试找到一种方法来使用不同的 ssh 密钥从 bitbucket 克隆不同的项目。我尝试使用 ssh_config 但我设法为单个特定主机的连接定义了一个不同的 ssh 密钥。
我想要实现的是拥有
bitbucket.org/myteam1/myproject的密钥 A
和
bitbucket.org/myteam2/myotherproject 的密钥 B
可以帮我解决这个问题吗?
最后我发现对我来说最好的解决方案是使用该-e sshcommand
选项并在其中-i key
指定我想要的私钥的选项。
使用 ssh-agent 的最简单的方法。当您运行 ssh-agent 时,您会添加所有密钥,它会尝试每个密钥,直到其中一个有效。您的操作系统很可能已经在运行 ssh-agent,因此请尝试
ssh-add /path/to/key1
ssh-add /path/to/key2
那么当您尝试连接时,如果任一键都可以使用。如果您没有运行 ssh-agent,则可以使用(在 unix/OS X 上)启动它:
eval $(ssh-agent)
然后添加两个密钥文件。
如果由于某种原因您无法忍受使用 ssh-agent,那么我找到了一个使用稍微棘手的.ssh/config
文件的解决方法。像这样的东西:
Host myteam1.bitbucket.org
Hostname bitbucket.org
HostKeyAlias bitbucket.org
IdentityFile ~/.ssh/keyA
Host myteam2.bitbucket.org
Hostname bitbucket.org
HostKeyAlias bitbucket.org
IdentityFile ~/.ssh/keyB
然后,当您使用hg clone ssh://hg@myteam2.bitbucket.org/myteam2/myproject
ssh 之类的假主机名克隆或推送 URL 时,将交换真实主机名和正确的密钥。
但实际上,只是使用ssh-agent
。
您可以在存储库 hgrc 级别覆盖您的密钥