2011-01-28 98 views
5

我为我的mercurial存储库使用ssh publickey身份验证。所以我有:如何为单个hg存储库设置多个ssh身份?

[ui] 
ssh = ssh -i ~/.ssh/id_rsa -C 

在我的.hgrc中。这工作正常,并允许我推/拉到ssh认证回购。但是,我希望能够推动/拉到另一个需要不同身份的回购。我怎样才能配置我的.hgrc文件,使身份与特定的路径相关联。我想我想要的东西是这样的:

[ui] 
one.prefix = someserver.com 
one.ssh = ssh -i ~/.ssh/id_rsa -C 
two.prefix = otherserver.com 
two.ssh = ssh -i ~/.ssh/otherid_rsa -C 

回答

3

你使用ssh自己的工具:ssh-agent。

$ eval $(ssh-agent) 
$ ssh-add ~/.ssh/id_rsa 
$ ssh-add ~/.ssh/otherid_rsa 

那么你不需要在你的.hgrc[ui]部分在所有SSH识别相关的任何东西。

或者你可以这样做:

[ui] 
ssh = ssh -i ~/.ssh/id_rsa -i ~/.ssh/otherid_rsa -C 

但SSH代理是在如此多的方式有用的是这是值得把它你的登录脚本,把它一天。

+1

我认为它是`ssh = ssh -i〜/ .ssh/id_rsa -i〜/ .ssh/otherid_rsa -C`否则我们会得到一个ssh用法错误。 – 2014-12-08 17:03:45

8

在你~/.ssh/config,添加使用ssh连接到主机someserver.comotherserver.com将使用指定的身份文件

Host someserver.com 
IdentityFile ~/.ssh/id_rsa 

Host otherserver.com 
IdentityFile ~/.ssh/otherid_rsa 

和任何人(包括hg和交互使用)。

请参阅ssh_config其他选项。