如何为单个hg存储库设置多个ssh标识?

noo*_*one 5 ssh mercurial public-key

我正在为我的mercurial存储库使用ssh publickey身份验证.所以我有:

[ui]
ssh = ssh -i ~/.ssh/id_rsa -C 
Run Code Online (Sandbox Code Playgroud)

在我的.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
Run Code Online (Sandbox Code Playgroud)

eph*_*ent 8

在你的~/.ssh/config,添加

Host someserver.com
IdentityFile ~/.ssh/id_rsa

Host otherserver.com
IdentityFile ~/.ssh/otherid_rsa
Run Code Online (Sandbox Code Playgroud)

和任何人(包括hg和交互式使用)ssh用于连接到主机someserver.comotherserver.com将使用指定的身份文件.

请参阅ssh_config其他选项.


Ry4*_*ase 3

您可以使用 ssh 自己的工具:ssh-agent 来完成此操作。

$ eval $(ssh-agent)
$ ssh-add ~/.ssh/id_rsa
$ ssh-add ~/.ssh/otherid_rsa
Run Code Online (Sandbox Code Playgroud)

那么您根本不需要 ssh 识别您的部分中的相关任何内容.hgrc[ui]

或者你可以这样做:

[ui]
ssh = ssh -i ~/.ssh/id_rsa -i ~/.ssh/otherid_rsa -C
Run Code Online (Sandbox Code Playgroud)

但 ssh-agent 在很多方面都很有用,值得将其放入您的登录脚本并结束。