2013-03-01 67 views

回答

10
  1. 第一個問題是不是真的與git的 - 它更多的是要能實際配置代理服務器的必要步驟。
    在Windows計算機上的代理配置可以在控制面板 - > Internet選項 - >連接 - > LAN設置中找到。
    如果選中「使用自動配置腳本」,則首先需要下載指定的文件並將其打開。我收到了一個包含一個小腳本的文件。它看起來是這樣的:

    function FindProxyForURL(url, host) 
    { 
        var myip = myIpAddress(); 
        var hostip = dnsResolve(host); 
        if (isInNet(hostip,"192.168.0.0","255.255.0.0")) 
         return "DIRECT"; 
        if (isInNet(hostip,"xyz.abc.0.0","255.255.0.0")) 
         return PROXY special-proxy:8080; 
        return "PROXY default-proxy:8080"; 
    } 
    

    所以,在我的情況下,代理的使用是default-proxy:8080

  2. 要真正讓git使用代理,我必須使用git config --global http.proxy http://<domain>\<username>:<password>@default-proxy:8080

    這樣做的明顯缺點是您的域密碼將以純文本的形式存儲在硬盤上。

    其他設置不起作用,儘管不同的消息來源聲稱他們應該。這些都是:

    1. 設置環境變量https_proxyhttp_proxyhttp://<domain>\<username>:<password>@default-proxy:8080
    2. 全球混帳配置設置該值:git config --global https.proxy http://<domain>\<username>:<password>@default-proxy:8080
    3. 設置環境變量http_proxyhttp://<domain>\<username>:<password>@default-proxy:8080
  3. 要獲得圍繞第三個問題,最簡單的可能是通過設置一個環境變量 - 證書來忽略證書錯誤由代理返回是不值得什麼呢:

    set GIT_SSL_NO_VERIFY=true 
    

不存儲在混帳配置普通密碼,您可以使用本地代理代替,例如cntlm

它允許改爲存儲密碼散列。要獲得散列,使用這個命令:

cntlm.exe -H -d <domain> -u <username> 

之後,你會被提示輸入您的密碼。結果將是三個哈希列表,其中PassNTLMv2最有可能是這種情況下的相關哈希。將cntlm.ini中的Password行替換爲輸出中的行,包括PassNTLMv2部分。

顯然,你必須現在配置git來使用這個本地代理。

+0

+1,感謝分享! – CharlesB 2013-03-01 12:38:25

+0

謝謝,這是唯一可行的解​​決方案!我不知道自動配置腳本會作爲文件下載。我應該提到的一件事 - 如果哈希字符(#)出現在中的任何位置,它將不起作用,因爲git會將它之前的所有內容解釋爲註釋。 – Boris 2015-12-15 15:04:03

1

如果你還想寫訪問github,你必須能夠通過代理獲得ssh訪問github。 爲此,您可以使用corkscrew

總之這是你如何做到這一點:
首先解corkscrew
然後在~/.ssh/proxy_auth包含<proxy_username>:<proxy_password>
現在告訴ssh來使用開瓶器通過添加以下到~/.ssh/config通過代理訪問github.com創建一個文件:

host github.com 
    port 22 
    proxycommand corkscrew <proxy_ip_address> <proxy_port> %h %p ~/.ssh/myauth 

現在測試,如果SSH可以通過ssh -T [email protected]通過代理獲得。如果這樣做,git:/協議也應該能夠通過代理。

+0

你爲什麼不用http推送? – 2013-03-01 13:53:29

+0

不知道,我只能通過ssh協議推送我的公司代理。 – Steven 2013-03-04 06:47:41