【问题标题】:How to config mercurial to push without asking my password through ssh?如何配置 mercurial 推送而不通过 ssh 询问我的密码?
【发布时间】:2010-08-29 09:48:12
【问题描述】:

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

我在 Ubuntu 9.10 上工作

【问题讨论】:

  • 正如下面的两个答案所暗示的,没有说 ssh,按照设计,不允许您在命令行、配置文件、环境变量或其他任何不安全的地方指定密码那。相反,您必须使用公钥/私钥对并在客户端和服务器上进行一些设置。您在下面有很好的 unix/mac 和 windows 答案。
  • 另外,将来,请指定您的操作系统,因为配置变化很大。
  • 对于丢失的信息,我很抱歉,让你 OJ。
  • 没问题 :) 仅供参考!

标签: mercurial ssh passwords hgrc


【解决方案1】:

在 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 命令,而无需进行身份验证。

【讨论】:

  • 我应该在服务器端的新 'myhost_key.pub' 上做什么?我只是将它复制到 ~/.ssh/ 目录,然后触摸了一个名为“authorized_keys”的新文件。然后在其中添加一行:'myhost_key.pub'。但它不起作用;
  • 您需要将公钥的内容附加到authorized_keys 文件中,而不仅仅是对其进行引用。说明没有直接将其复制到该名称的原因是不覆盖其现有内容。所以第 2 步获取到远程主机的密钥,第 3 步是将其内容放入正确的文件中。之后,您可以删除复制的myhost_key.pub。我希望能澄清一些事情。
【解决方案2】:

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

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


客户端:设置 Mercurial

如果您还没有安装 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 实用程序对话以获取密钥的密码,而不是交互式地询问您。

客户现在准备好了!

【讨论】:

    【解决方案3】:

    安装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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-06
      • 2022-10-07
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 2012-07-28
      相关资源
      最近更新 更多