Git代理設定與訪問Github

來源:互聯網
上載者:User

標籤:github   git   Proxy 伺服器   tmg   ssl   

由於目前工作的網路環境有著很嚴格的限制,可以說最近在通過代理訪問Github上頗費了一些周折,也積累了一些相關的經驗,覺得有必要備忘一下。本著”不重新發明輪子“的宗旨,本文不會對Github代理設定的每一個細節進行贅述,文中會給出現成的參考文章,這裡要做的是針對一些重要的問題進行解釋和補充,相信一定能給遇到同樣問題朋友以協助。本文原文出處:http://blog.csdn.net/bluishglc/article/details/37807501 嚴禁任何形式的轉載,否則將委託CSDN官方維護權益!

1. 別折騰了,請先屏蔽NTLM驗證!

首先,如果你的網路代理程式使用的是NTLM驗證,不要作任何無謂的“掙紮”,請先安裝Cntlm,建立一個無須身分識別驗證的普通HTTP代理,因為目前版本的GIT不支援NTLM驗證的代理,不先藉助Cntlm屏蔽掉NTLM驗證,後續的任何工作都是無意義的。關於Cntlm的安裝和配置請參考:http://blog.csdn.net/bluishglc/article/details/37600773

2. Git代理配置走起

關於Git代理的配置請參考:http://jixiuf.github.io/git/git-proxy-on-windows.html 這裡對文中提到的ssh的config檔案簡單地解釋一下,這個檔案主要是儲存一些經常訪問的目標主機的串連配置,很像Putty裡儲存的session。config檔案的結構是是以Host開頭的配置項是作為一組,Host項之後到下一個Host之前的所以配置項都是針對這個Host配置的!另外,文中config檔案提到的connect是一種代理轉寄工具,對一個簡單的命令列工具不太可能設計如何配置代理,或者像SSH這樣為了保證程式本身功能的單一,把代理配置委託第三方工具實現,這就是connect的作用。

3. https://?可以!git://?沒門!

安裝配置好Cntlm,參看前面的文章進行配置,我們就可以在Github上檢入檢出https://描述的repository了,如果你嘗試使用git://或[email protected]格式的地址訪問,則在某些代理環境下可能會報出如下錯誤:

HTTP/1.1 502 Proxy Error ( The specified Secure Sockets Layer (SSL) port is not allowed. Forefront TMG is not configured to allow SSL requests from this port. Most Web browsers use port 443 for SSL requests.  )

引起這一問題的原因是git://使用的9418連接埠以及基於SSH的[email protected]格式的地址使用的22連接埠在你的網路環境裡(特別是代理服務端)被防火牆屏蔽了。這是極為常見的,大多數的代理環境基於安全考慮,會屏蔽除80(http)和443(https)之外的連接埠。那這是否意味著我們就不能在這種網路環境裡使用git://或[email protected]格式的地址呢?請繼續看下文。


4. 幸好有你:SSH over the HTTPS port


雖然可以在Github上使用HTTPS協議push代碼(使用的是使用者名稱在Github上的使用者名稱和密碼),但通常來說,使用SSH檢出和提交代碼是更為安全,更適合團隊開發,那麼怎麼解決前文提到的問題呢?對此,Github通過將ssh的串連連接埠指定為https使用的443,使用了另外一個主機名稱:ssh.github.com來解決這一問題,這樣我們可以通過大多數Proxy 伺服器允許的443連接埠,使用SSH訪問Github了,這一點在前面參考文章中提到的config檔案裡也配置過了,就是Host為ssh.github.com的部分,關於這部分的說明和配置,Github的官方協助文檔也有說明:https://help.github.com/articles/using-ssh-over-the-https-port。這裡我只想說一下如何驗證配置已經成功,顯然,只要我們能通過SSH登入目標主機就表明配置正確了:

方法一:像我們前面提到的參考文章,它把ssh.github.com的配置參數寫進了ssh的config檔案,這樣可以在命令列工具中使用

ssh -T -p 443 [email protected]

就能驗證config檔案配置是否正確了,成功登入後提示:

方法二:如果在配置這些參數之前我們不能確定它們的正確性,我們可以先通過命令列的方式來指定這些參數,待驗證通過後把這些參數寫入到config檔案中。此時的命令要這樣寫:

ssh -o ProxyCommand="/path/to/connect -H 代理主機:連接埠 %h %p" -i "/path/to/your/github_private_key" -T -p 443 [email protected]

成功登入後提示:


方法三:我們還可以通過putty以另外一咱完全獨立和便捷的方式來驗證,即在putty中建立一個session,目標主機是ssh.github.com,連接埠443,登入使用者名稱443,指定好你的Github私密金鑰(注意:putty使用的私密金鑰與openssh的私密金鑰格式是不一樣的,如果你沒有儲存putty格式的私密金鑰就需要通過putty的keygen工具產生或轉換),設定好代理主機和連接埠然後串連,如果出現如的提示,也表示配置正確!


最後特別提醒的是,在上述配置驗證成功後,我們從github上檢出項目時務必記得修改主機名稱,把[email protected]改為[email protected] ssh.github.com以檢出opentsdb項目為例,命令要從

git clone [email protected]:OpenTSDB/opentsdb.git

變為:

git clone [email protected]:OpenTSDB/opentsdb.git


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.