如何配置mercurial推送而不通过ssh询问我的密码?

时间:2010-08-29 09:48:12

标签: mercurial ssh passwords hgrc

我在项目中使用mercurial,每当我通过ssh将新的变更集推送到服务器时,它会要求我输入密码。
然后如何配置mercurial推出没有问密码?

我在Ubuntu 9.10上工作

3 个答案:

答案 0 :(得分:13)

在Linux和Mac上,使用ssh-agent

  1. 确保您拥有ssh密钥对(有关详细信息,请参阅man ssh-keygen
  2. 将您的公钥(从~/.ssh/id_dsa.pub)复制到远程计算机,为其指定一个唯一名称(例如myhost_key.pub
  3. 正常登录远程计算机并将刚刚复制的公钥附加到~/.ssh/authorized_keys文件
  4. 在本地工作站上运行ssh-add,将密钥添加到钥匙串
  5. 现在,您可以在此会话中使用任何远程hg命令,而无需进行身份验证。

答案 1 :(得分:9)

假设您使用的是Windows,请阅读Mercurial/SSH guide。在帖子底部,您可以找到有关如何使用PuTTy为您执行此操作的信息。

编辑: - 这是我正在谈论的帖子的一部分(请记住,您需要使用已加载的密钥运行选美才能实现此功能):


客户:设置Mercurial

如果您还没有,请确保使用默认设置在客户端计算机上安装Mercurial。确保告诉安装程序将Mercurial路径添加到系统路径。

客户端的最后一步配置是告诉Mercurial在使用SSH时使用PuTTy工具。 Mercurial可以由名为.hgrc的特定于用户的配置文件配置。在Windows上,它也可以称为Mercurial.ini。该文件位于您的主文件夹中。如果您不知道您的主文件夹是什么,只需打开命令提示符并键入echo%USERPROFILE% - 这将告诉您路径。

如果尚未设置配置,则配置文件可能不存在。所以你必须创建它。手动在主文件夹中创建文件调用.hgrc或Mercurial.ini,然后在文本编辑器中打开它。以下是我的部分内容:

[ui]
username = OJ Reeves

editor = vim
ssh = plink -ssh -i "C:/path/to/key/id_rsa.ppk" -C -agent

最后一行是键,这是你需要确保正确设置的。我们告诉Mercurial使用plink程序。这也是PuTTy,它是PuTTY程序本身在幕后所做的命令行版本。我们还添加了一些参数:

  • -ssh:表示我们正在使用SSH协议。
  • -i“file.ppk”:指定我们要用于登录远程服务器的私钥文件的位置。将其更改为指向当地与putty兼容的ppk私钥。确保您也为路径分隔符使用正斜杠!
  • -C:此开关启用压缩。
  • -agent:这告诉plink与分页实用程序交谈以获取密钥的密码,而不是以交互方式请求它。

客户现在已准备好摇滚!

答案 2 :(得分:0)

安装PuTTY

如果您使用的是Windows,请在您喜欢的文本编辑器中打开projectdir/.hg/hgrc。编辑它看起来像这样:

[paths]
default = ssh://hg@bitbucket.org/name/project

[ui]
username = Your Name <your@email.com>
ssh = "C:\Program Files (x86)\PuTTY\plink.exe" -ssh -i "C:\path\to\your\private_key.ppk" -C -agent

如果它需要永远推送,服务器可能会试图问你一个问题(但它没有显示)。

运行:

"C:\Program Files (x86)\PuTTY\plink.exe" -T hg@bitbucket.org -i "C:\Program Files (x86)\PuTTY\plink.exe" -ssh -i "C:\path\to\your\private_key.ppk"

回答任何问题,然后再试一次。

如果您正在使用Bitbucket,请使用puttygen打开私钥,将公钥从顶部文本框中复制出来,然后将其添加到您的用户帐户:https://bitbucket.org/account/user/USERNAME/ssh-keys/