代码之家  ›  专栏  ›  技术社区  ›  erick2red

通过摘要代理身份验证的Git

  •  18
  • erick2red  · 技术社区  · 15 年前

    我想通过代理服务器执行“Git克隆”。问题是我的代理服务器使用摘要式身份验证。所以我在Git文档中找不到任何帮助,也找不到已经做过的人。

    我在谷歌搜索中找不到任何有用的结果。

    THXS。

    6 回复  |  直到 15 年前
        1
  •  24
  •   Delicia Brummitt Wilfred Springer    12 年前

    为了省去对班纳特答案的几分钟谷歌搜索:

    1. 清除旧设置:
      >git config --global --unset https.proxy
      >git config --global --unset http.proxy
    2. 设置新设置:
      >git config --global https.proxy https://USER:PWD@proxy.whatever:80
      >git config --global http.proxy http://USER:PWD@proxy.whatever:80

    3. 验证新设置:
      >git config --get https.proxy
      >git config --get http.proxy

    注意:验证时,您应该看到与输入的值相同的值。

        2
  •  17
  •   Bennett McElwee    14 年前

    通过设置环境变量,我可以通过经过身份验证的代理进行Git克隆。 http_proxy http://username:password@proxyhost:80

    然后是一个普通的OLE git clone 工作。

    (代理是一些公司Windows的东西,所以我的用户名看起来像域\用户名。花了一段时间才意识到我需要这个域名。)

        3
  •  2
  •   VonC    10 年前

    注意,Git支持HTTP代理,因为 Git 1.7.10, Apr. 2012, commit dd61399 .

    但是,假设您安装了curl 7.10.7+,这是Git在Git 2.3.2+之前没有检查的内容(2015年第1季度)

    这是用固定的 commit 1c2dbf2 通过 Tom G. Christensen ( tgc )

    http:支持curl<7.10.7

    Commit dd61399 引入了对需要身份验证但依赖于 CURL_PROXYAUTH 选项 加入了卷曲7.10.7。
    这确保只有在libcurl可以支持代理身份验证时才启用代理身份验证。

        4
  •  1
  •   Brian Campbell Dennis Williamson    15 年前

    Git似乎不支持经过身份验证的代理服务器。你可以检查 http.c from the git.git repository ;为了支持经过身份验证的代理服务器,必须设置 CURL_PROXYUSERPWD 设置用户名和密码,但该字符串不会出现在该文件中。

    一种可能的解决方案是修复git;向 http.c ,如 http.proxyuser , http.proxypass ,设置代理的用户名和密码,以及 http.proxyauth 设置身份验证方法,然后根据需要传入这些方法 cURL configuration options .

    如果您不想对Git源代码进行黑客攻击,可以设置自己的本地代理服务器,不需要验证,然后将其转发到需要验证的代理服务器。 Squid 支架 this mode of operation 尽管配置可能有点复杂;我发现 an example configuration 这是为了演示这个设置,尽管我还没有验证它是否可以自己运行。

    编辑 :没关系,检查完 Squid source code ,在将请求转发给对等方时,它似乎只支持基本身份验证,而不支持摘要式身份验证:

    httpHeaderPutStrf(hdr_out, header, "Basic %s", base64_encode(orig_request->peer_login));
    

    我没有找到任何代理服务器可以将请求与启用摘要式身份验证的另一个代理一起传递;如果您可以找到一个支持上游代理摘要式身份验证的代理服务器,我建议您使用它。

    否则,我建议使用与HTTP不同的协议;使用 ssh: 如果您需要身份验证,或者原始 git: 协议,如果您只是从公共服务器下拉更改。

        5
  •  0
  •   Community CDub    7 年前

    如果您是通过ssh克隆的,则是对密切相关问题的答案 How do I use GitHub through harsh proxies? 看起来适合你的情况,但不是 Corkscrew ,它还不支持摘要式身份验证,请使用 tunnel-auth.pl 来自CPAN。

        6
  •  0
  •   Badjem79    6 年前

    使用

    git config—全局http.proxy

    一般来说, 如果用户或密码有任何特殊字符,如“$\”等,您必须对其进行URL编码,然后类似于:%24%5C

    希望这会有所帮助,因为我经常为此发火…