7

我在我的项目中使用 mercurial,每次我通过 ssh 将新的变更集推送到服务器时,它都会要求我输入密码。
那么如何配置 mercurial 在不询问密码的情况下推送呢?

我在 Ubuntu 9.10 上工作

4

3 回答 3

15

在 Linux 和 Mac 上,使用ssh-agent.

  1. 确保您有一个 ssh 密钥对(请参阅man ssh-keygen详细信息)
  2. 将您的公钥(从~/.ssh/id_dsa.pub)复制到远程计算机,并为其指定一个唯一名称(例如myhost_key.pub
  3. 正常登录远程机器,将刚才复制的公钥追加到~/.ssh/authorized_keys文件中
  4. 在您的本地工作站上运行ssh-add以将您的密钥添加到钥匙串

您现在可以hg在此会话中使用任何远程命令,而无需进行身份验证。

于 2010-08-29T09:59:32.773 回答
9

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

编辑:-这是我正在谈论的帖子的一部分(请记住,您需要在已加载密钥的情况下运行选美才能使其正常工作):


客户:设置 Mercurial

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

客户端配置的最后一步是告诉 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 与 pageant 实用程序对话以获取密钥的密码,而不是交互式地询问您。

客户现在准备好摇滚了!

于 2010-08-29T09:50:15.017 回答
0

安装腻子

如果您使用的是 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/

于 2015-05-30T23:10:53.770 回答