Git代理服務器設置和訪問Github


因為現在工作的網絡環境有着非常嚴格的限制,。可以說,在最近的訪問通過代理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://或git@github.com格式的地址訪問,則在某些代理環境下可能會報出例如以下錯誤:

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://使用的9418port以及基於SSH的git@github.com格式的地址使用的22port在你的網絡環境里(特別是代理服務端)被防火牆屏蔽了。這是極為常見的,大多數的代理環境基於安全考慮,會屏蔽除80(http)和443(https)之外的port。

那這是否意味着我們就不能在這樣的網絡環境里使用git://或git@github.com格式的地址呢?請繼續看下文。


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


盡管能夠在Github上使用HTTPS協議push代碼(使用的是username在Github上的username和password)。但通常來說,使用SSH檢出和提交代碼是更為安全,更適合團隊開發,那么怎么解決前文提到的問題呢?對此,Github通過將ssh的連接port指定為https使用的443,使用了另外一個主機名:ssh.github.com來解決這一問題,這樣我們能夠通過大多數代理server同意的443port,使用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 git@ssh.github.com

就能驗證config文件配置是否正確了。成功登入后提示:

方法二:假設在配置這些參數之前我們不能確定它們的正確性。我們能夠先通過命令行的方式來指定這些參數,待驗證通過后把這些參數寫入到config文件中。

此時的命令要這樣寫:

ssh -o ProxyCommand="/path/to/connect -H 代理主機:port %h %p" -i "/path/to/your/github_private_key" -T -p 443 git@ssh.github.com

成功登入后提示:


方法三:我們還能夠通過putty以另外一咱全然獨立和便捷的方式來驗證,即在putty中建立一個session,目標主機是ssh.github.com。port443,登入username443,指定好你的Github私鑰(注意:putty使用的私鑰與openssh的私鑰格式是不一樣的,假設你沒有保存putty格式的私鑰就須要通過putty的keygen工具生成或轉換)。設定好代理主機和port然后連接,假設出現例如以下圖的提示,也表示配置正確!




最后特別提醒的是,在上述配置驗證成功后。我們從github上檢出項目時務必記得改動主機名,把 git@github.com改為 git@ssh.github.com
以檢出opentsdb項目為例,命令要從

git clone git@github.com:OpenTSDB/opentsdb.git

變為:

git clone git@ssh.github.com:OpenTSDB/opentsdb.git


版權聲明:本文博主原創文章,博客,未經同意不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM