7

海,

我尝试从 需要 Windows 身份验证的公司代理后面将我 在 Bitbucket.org 上的私人存储库中的hg pull 到我的 Windows 机器上的本地存储库中。


  • 我找到了代理服务器和端口(IE 的 Internet 选项)

  • 我在我的设置Mercurial.ini文件中找到了%USERPROFILE%

  • 我在其中添加了这一部分(info):

    [http_proxy]
    主机 = TheProxyServer:TheProxyServerPort
    用户 =MyWindowsLogin
    密码 =MyWindowsPassword

  • 这有效:

C:\path\to\repo> hg pull
http 授权要求
领域:Bitbucket.org HTTP
用户:

输入 Bitbucket 的凭据后,我得到:

搜索更改
未找到更改

但是写下密码Mercurial.ini显然是一个主要的安全问题(除了由于我们的密码政策而必须每月更新此文件之外)。

是否有可能让 Mercurial 请求代理凭据?
或者以更安全的方式存储这些凭据?

编辑:

我尝试使用相同的设置和 SSH,但我得到了这个:

C:\path\to\repo> hg clone ssh://hg@bitbucket.org/ ME /repo/
running ""C:\Program Files\TortoiseHg\TortoisePlink.exe" -ssh -2 hg@bitbucket.org " hg -R ME /repo/ 服务 --stdio"

中止:远程 hg 没有合适的响应!

和一个对话框:"PuTTY Fatal Error - Network error: Connection timed out"

编辑2:

出现这个问题是因为 Subversion 正确处理了这种情况:

在 Subversionservers文件中,我也指定了代理主机和端口,Subversion 会自动将我的 Windows 身份验证发送给它。当我通过代理从网络上签出源代码时,我不必在任何地方输入或写下我的凭据,例如

C:\workingdir> svn checkout http://okarito.googlecode.com/svn/trunk/ okarito-read-only
... 签出修订版 5。

提前致谢!

4

2 回答 2

5

另一种选择是运行本地 http 代理,然后使用您公司的 http 代理进行身份验证。您可以在 Cygwin 下运行 cntlm并将 NTLMv2 哈希安全地存储在 cntlm conf 文件中。然后,您将 http 代理设置为 localhost:3128,并且不指定用户名或密码。

我的另一个建议是使用 TortoiseHg。这将存储您的代理信息,但我不确定它是否安全存储。

于 2010-01-14T01:17:30.403 回答
3

您可以使用该--config选项,hg因为这允许您从命令行覆盖配置设置。语法是--config <section>.<name>=<value>,所以试试这个:

hg --config http_proxy.passwd=YourWindowsPassword pull

这会将您的密码保留在命令历史记录中,但这可能比Mercurial.ini文件中更好。

于 2010-01-12T15:43:49.280 回答