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

让Git使用代理服务器

  •  829
  • Debajit  · 技术社区  · 15 年前

    如何让Git使用代理服务器?

    我需要从Git服务器签出代码,它每次都显示“请求超时”。我该怎么解决这个问题?

    或者,如何设置代理服务器?

    18 回复  |  直到 5 年前
        1
  •  1493
  •   Markus Köhler    8 年前

    使用命令:

    git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
    
    • 改变 proxyuser 给你的代理用户
    • 改变 proxypwd 到您的代理密码
    • 改变 proxy.server.com 到代理服务器的URL
    • 改变 8080 到代理服务器上配置的代理端口

    如果您在任何时候决定重置此代理并且在没有代理的情况下工作:

    使用命令:

    git config --global --unset http.proxy
    

    最后,要检查当前设置的代理:

    git config --global --get http.proxy
    
        2
  •  124
  •   alvaro    10 年前

    在公司防火墙后面的WindowsXP中,这对我很有用。

    除了git v1.771之外,我不需要安装任何本地代理或其他软件 http://code.google.com/p/msysgit/downloads/list?can=3

    $ git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
    $ git config --system http.sslcainfo /bin/curl-ca-bundle.crt
    $ git remote add origin https://mygithubuser:mygithubpwd@github.com/repoUser/repoName.git
    $ git push origin master
    

    高级用户 =我由IT部门分配的代理用户,在我的情况下,它是我用来登录到PC的同一个Windows用户,即Active Directory用户

    PROXYPWD =我的代理用户的密码

    代理服务器:8080 =代理名称和端口,我从“控制面板”、“Internet选项”、“连接”、“LAN设置”按钮、“代理服务器”部分中的“高级”按钮中获取,使用第一行(http)上的服务器名称和端口。

    神秘主义者 =我用于登录github.com的用户

    侏儒 =我的github.com用户的密码

    翻版机 =回购的用户所有者

    重新命名 =回购的名称

        3
  •  48
  •   Jens Wirth    7 年前

    设置名为 http_proxy 价值 ProxyServer:Port . 这是最简单的解决方案。分别使用 https_proxy 正如大富在评论中指出的。

    设置gitproxy(如sleske提到的)是另一个选项,但这需要一个“命令”,这不像上面的解决方案那么简单。

    参考文献: http://bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html

        4
  •  36
  •   guerda    11 年前

    如果配置代理服务器的命令行方式不起作用, 您可能只需编辑.gitconfig(在配置文件的根目录中,它可能隐藏在c:\documents和settings中以及某些网络驱动器上),然后添加:

    [http]
        proxy = http://username:password@proxy.at.your.org:8080
    

    但是,这只包括命令行配置的第一步。您可能还需要编辑系统Git配置,我不知道它们将其隐藏在哪里。

        5
  •  27
  •   Steve Pitchers D V Santhosh Kiran    8 年前

    作为替代使用 git config --global http.proxy address:port ,可以在命令行上设置代理:

    git -c "http.proxy=address:port" clone https://...
    

    其优点是代理服务器没有持续设置。在bash下,您可以设置别名:

    alias git-proxy='git -c "http.proxy=address:port"'
    
        6
  •  19
  •   Sk Hasanujjaman    10 年前

    如果您使用的是Ubuntu,请执行以下操作…

    步骤1:安装螺旋锥

    $ sudo apt-get install corkscrew
    

    步骤2:编写一个名为git-proxy.sh的脚本并添加以下内容

    #!/bin/sh
    
    exec corkscrew <name of proxy server> <port> $*
    
    # <name_of_proxy_server> and <port> are the ip address and port of the server
    # e.g. exec corkscrew 192.168.0.1 808 $*
    

    步骤3:使脚本可执行

    $ chmod +x git-proxy.sh
    

    步骤4:通过设置环境变量为git设置proxy命令

    $ export GIT_PROXY_COMMAND="/<path>/git-proxy.sh"
    

    现在使用git命令,例如

    git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
    
        7
  •  11
  •   Arpit Aggarwal    7 年前

    由于多重原因,面临同样的问题 .gitconfig Windows中的文件,请按照以下步骤进行修复:

    步骤1: 开放式鞭打

    步骤2: 寻找 GITCONFIG ,执行以下命令:

    git config --list --global --show-origin
    

    步骤3: 将以下内容复制到 GITCONFIG :

    [http]
        proxy = http://YOUR_PROXY_USERNAME:YOUR_PROXY_PASSWORD@YOUR.PROXY.SERVER:YOUR.PROXY.SERVER.PORT
        sslverify = false
    [https]
        proxy = http://YOUR_PROXY_USERNAME:YOUR_PROXY_PASSWORD@YOUR.PROXY.SERVER:YOUR.PROXY.SERVER.PORT
        sslverify = false
    [url "http://github.com/"]
        insteadOf = git://github.com/
    
    [user]
        name = Arpit Aggarwal
        email = aggarwalarpit.89@gmail.com
    
        8
  •  9
  •   augustocbx    7 年前

    尝试将以下内容放入~/.gitconfig文件:

    [http]
        proxy = http://proxy:8080
    [https]
        proxy = http://proxy:8080
    [url "https://"]
        insteadOf = git://
    
        9
  •  7
  •   ashutosh    9 年前

    对于git协议(git://…),安装socat并编写脚本,如:

    #!/bin/sh
    
    exec socat - socks4:your.company.com:$1:$2
    

    使其可执行,将其放在您的路径中,并将其放在 ~/.gitconfig 设置 core.gitproxy 以那个脚本的名字命名。

        10
  •  5
  •   blacelle    6 年前

    除了这些答案之外,我发现考虑这两点很有帮助:

    可能需要强制实施身份验证方案:

    [http]
        # https://github.com/git/git/blob/master/Documentation/config.txt
        proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm
    

    另外,通常使用NTLM身份验证模式,可能需要明确地提供AD域。

    在Git BASH中:

    echo %userdomain%
    

    并相应地更新http.proxy:

    git config --global http.proxy http://DOMAIN\\proxyuser:proxypwd@proxy.server.com:8080
    

    无论如何,添加curl日志有助于调查:

    export GIT_CURL_VERBOSE=1
    
        11
  •  4
  •   Shak Daniel    10 年前

    我在工作时使用WindowsXP(州/政府),所以我做了研究,发现了这个 here 这对我很有用。希望这有帮助:)

    http_proxy环境变量

    如果使用代理服务器或防火墙,则可能需要设置http_proxy环境变量,以便从命令行访问某些URL。 示例:为Perl安装PPM或在Linux中应用RPM,更新Ubuntu

    使用代理服务器的主机名或IP地址设置http_proxy变量: http_proxy=http://[代理.example.org]

    如果代理服务器需要用户名和密码,请将其包含在以下表单中: http_proxy=http://[用户名:password@proxy.example.org]

    如果代理服务器使用的端口不是80,请包括端口号: http_proxy=http://[用户名:password@proxy.example.org:8080]

    视窗XP

    1. 打开控制面板并单击系统图标。
    2. 在“高级”选项卡上,单击“环境变量”。
    3. 在“系统变量”面板中单击“新建”。
    4. 使用适当的代理信息添加http_代理(请参阅上面的示例)。

    Linux、Solaris或HP-UX

    使用特定于shell的命令(例如set或export)设置http_proxy环境变量。要使此更改持久化,请将命令添加到外壳的相应配置文件中。例如,在bash中,在.bash_概要文件或.bashrc文件中添加如下行:

    1. http_proxy=http://[用户名:密码@hostname:port];
    2. 导出$http_代理
        12
  •  3
  •   Fangxing    6 年前

    如果你有 tsocks proxychains 您可以安装和配置

    $ tsocks git clone <you_repository>
    

    $ proxychains git clone <you_repository>
    

    为了缩短它,我创建了一个符号链接 /usr/bin/p 对于 proxychains ,所以我可以这样使用它

    p git clone <you_repository>
    

    我可以用它来代理任何命令,

    p <cmd-need-be-proxied>
    

    顺便说一下,proxychains很长一段时间没有更新,您可能想尝试一下 proxychians-ng

        13
  •  2
  •   Add080bbA    7 年前

    在终端上设置Git代理

    如果

    • 您不希望手动为每个Git项目逐个设置代理
    • 总是希望对所有项目使用相同的代理

    全局设置一次

    git config --global http.proxy username:password@proxy_url:proxy_port
    git config --global https.proxy username:password@proxy_url:proxy_port
    

    如果只想为一个Git项目设置代理 (在某些情况下,您可能不希望对某些Git连接使用相同的代理或任何代理)

    //go to project root
    cd /bla_bla/project_root
    //set proxy for both http and https
    git config http.proxy username:password@proxy_url:proxy_port
    git config https.proxy username:password@proxy_url:proxy_port
    

    如果要显示当前代理设置

    git config --list 
    

    如果要全局删除代理

    git config --global --unset http.proxy
    git config --global --unset https.proxy
    

    如果只想删除一个git根目录的代理

    //go to project root
    cd /bla-bla/project_root
    git config --unset http.proxy
    git config --unset https.proxy
    
        14
  •  1
  •   Community Egal    7 年前

    对于Windows用户:如果 git config set http_proxy= 不起作用, this answer 可能有帮助:

    替换 git:// Git存储库的协议 http:// . 注意,您必须设置 http_proxy 首先,无论如何。

        15
  •  1
  •   hannad rehman    6 年前

    这是代理设置

    git config --global http.proxy http://<username>:<pass>@<ip>:<port>
    git config --global https.proxy http://<username>:<pass>@<ip>:<port>
    
        16
  •  0
  •   Janac Meena    6 年前

    在不知疲倦地尝试了这个页面上的每一个解决方案之后,我的工作就是使用和ssh密钥!

    1. 开放式鞭打
    2. $ssh-keygen.exe-t rsa-c
    3. 打开Git提供程序(GitHub、BitBucket等)
    4. 添加复制id_rsa.pub文件内容到Git提供程序的输入页(检查您的配置文件)
        17
  •  0
  •   Wael Almadhoun    6 年前

    我遵循了这里推荐的大部分答案。首先,我得到了以下错误:

    致命:无法访问 ’ https://github.com/folder/sample.git/ ':schannel:下一个 InitializeSecurityContext失败:未知错误(0x80092012)-The 吊销函数无法检查 证书。

    然后我尝试了@salim hamidi的以下命令

    git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
    

    但我有以下错误:

    致命:无法访问 ’ https://github.com/folder/sample.github/ ':接收到HTTP代码 连接后从代理服务器发送407

    如果代理服务器无法验证SSL证书,则可能发生这种情况。因此,我们要确保关闭了SSL验证(不建议用于不受信任的站点),因此我已经完成了@arpit建议的以下步骤,但有一些细微的更改:

    1.首先确保删除任何以前的代理设置:

    git config --global --unset http.proxy
    

    2.然后列出并获取gitconfig内容

    git config --list --show-origin
    

    3.上次更新gitconfig文件内容如下:

    [http]
    sslCAInfo = C:/yourfolder/AppData/Local/Programs/Git/mingw64/ssl/certs/ca-bundle.crt
    sslBackend = schannel
    proxy = http://proxyuser:proxypwd@proxy.server.com:8080
    sslverify = false
    [https]
    proxy = http://proxyuser:proxypwd@proxy.server.com:8080
    sslverify = false
    
        18
  •  0
  •   Suraj Rao Soumya Sengupta    5 年前

    我已经尝试了以上所有的答案,但没有任何效果,因为存在代理密码编码问题。

    此命令有效:

    git config --global http-proxy http://username@proxy.example.com:PortNumber 
    

    不要在命令中输入密码。当您尝试连接到任何git repo时,它会动态地询问。