不同路径的不同SSH密钥

时间:2012-11-12 18:45:26

标签: mercurial ssh key host ssh-keys

我试图找到一种方法来使用不同的ssh密钥从bitbucket克隆不同的项目。我尝试使用ssh_config,但我设法为单个特定主机的连接定义了一个不同的ssh密钥

我想要实现的目标是

bitbucket.org/myteam1/myproject的

键A

bitbucket.org/myteam2/myotherproject

键B

可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

最后我发现对我来说最好的解决方案是使用-e sshcommand选项,并在其中-i key选项指定我想要的私钥。

答案 1 :(得分:1)

远离最简单的方法来使用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等虚假主机名克隆或推送到URL时,ssh会交换真实主机名和右键。

但实际上,只需使用ssh-agent

答案 2 :(得分:0)

您可以覆盖存储库hgrc级别的密钥

请参阅Configuration files for Mercurial