Mercurial,通过密钥进行身份验证。

15

我在我的~/.hgrc配置文件中有这样一段内容

[auth]
repo.prefix = ssh://hguser@192.168.132.72/repos
repo.key = /home/zerkms/.ssh/mercurial-repo/id_rsa

但是当我写下以下代码:

hg clone ssh://hguser@192.168.132.72/repos/rps .

Mercurial仍然需要密码才能进入。

我做错了什么?

为了防止显而易见的问题:

是的,指定路径中有一个有效密钥,如果使用ssh-agent,它可以正常工作。

我的问题是如何使用[auth]部分中的密钥。

2个回答

22

以下方法适用于我(可能是自问题提出以来的新设置):

将以下内容添加到hgrc文件中:

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

-C 参数用于启用压缩,-i 参数用于指定身份验证文件。如果密钥已经加载到 ssh-agent 中,我就不需要再次输入口令了。


1
另外,请注意使用“-i”标志提供的私钥应仅可被当前用户读取(权限为600即可),否则在ssh检出过程中将被忽略。 - Emin
有时候(比如在Windows上使用ssh),指定用户名可能会很有帮助,这样命令行就是 ssh = ssh -C -i C:\Users\username\.ssh\id_rsa -l username - Charlweed

15
< p > auth并不适用于SSH。密钥需要以另一种方式加载。如果它只是~/.ssh/id_rsa,那么它将自动完成,但它不是这样的,您可能需要做一些事情来注册它。通常,使用~/.ssh/id_rsa是最简单的方法- 将~/.ssh/id_rsa.pub的内容放入目标计算机上的~/.ssh/authorized_keys中,然后就准备好了。 < / p >

如果我需要几个密钥怎么办? 我不能有几个 ~/.ssh/id_rsa 文件 :-S - zerkms
我只为自己使用一个密钥。 - Chris Morgan
好的,那我就通过ssh-agent来工作。感谢您的回答。 - zerkms
23
如果你需要几个不同的密钥,可以通过在~/.ssh/config中设置IdentityFile来配置(请参阅man ssh_config),或通过hg clone --ssh“ssh -i ~/.ssh/yourkey”...来配置。 - Martin Geisler
2
@MartinGeisler 你应该真正将其作为答案。 - akaltar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接