1. 程式人生 > >Git代理設定與訪問Github

Git代理設定與訪問Github

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                由於目前工作的網路環境有著很嚴格的限制,可以說最近在通過代理訪問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來解決這一問題,這樣我們可以通過大多數代理伺服器允許的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


           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述