2011-05-02 59 views
42

我正在阻止端口9418(GIT),我試圖安裝一些工具,明確做的git://github.com/...簽出在防火牆後面,所以我不能切換到HTTPS進行結賬。的git://通過代理

所以我想知道是否有可能通過代理服務器,如果是:)

回答

20

看一看core.gitproxy設置在Git config

快速谷歌上搜索發現這個劇本,可能是有用的(也可能不 - 我沒有嘗試):https://gist.github.com/49288

+1

。提問者是否在意評論這是否有效,以及是否存在缺點? – ijw 2011-05-07 12:20:35

+0

其實我很感興趣,該信息爲好,因爲我說我從來沒有嘗試過自己:-) – 2011-05-07 15:06:51

+0

爲我工作!很好找! – rkyser 2012-09-05 20:14:08

2

你如何試圖基於SSH協議的TCP隧道的所有流量重定向到9418端口?如果你有一個SSH服務器(a)是你的防火牆之外和(b)允許IP轉發,你可以這樣做:

ssh -L localhost:9418:<remote>:9418 [email protected] 

,或者,如果你要運行在443端口的sshd繞過防火牆,

ssh -P 443 -L localhost:9418:<remote-host>:9418 [email protected] 

然後,在本地:

git checkout git://localhost/... 

顯然,這不是透明的,這是一個有點令人費解 - 沒有疑問工具,有在這個問題更具體的針對性。不過,我通常使用這種方法,因爲它使用了我必須使用的工具(ssh和我租用的廉價虛擬服務器)。

(我實際上從來沒有一個Git連接嘗試這樣做,但我不明白爲什麼這是行不通的。我有沒有問題,許多其他的單TCP端口協議中使用它。)

+0

是的,我可以得到一個具體的回購結帳工作正常,但出來的東西我控制的嘗試做'混帳混帳克隆://github.com/...',所以我不能做這樣的代理,因爲我不能將URL更改爲'localhost' – 2011-05-02 20:08:34

+0

你可以嘗試暫時配置github.com到在/ etc/hosts中爲127.0.0.1嗯,有趣的是 – 2011-05-02 20:09:52

65

如果你正在談論git的子模塊,試試這個:

git config --global url.https://github.com/.insteadOf git://github.com/ 

.. 。從here

這樣,你不需要設置任何代理,也沒有運行任何腳本。

+4

感謝你,救了我一下午 – Patrick 2013-02-27 21:17:10

+0

這是一個超級優雅的方法。工作得很好,並沒有涉及任何瘋狂的代理廢話。我以前只能更改git:// URI,但在部署中處理捆綁器使其成爲真正的噩夢。你的解決方案神奇無痛。 – 2013-04-09 19:13:41

+0

這是在我設置http.proxy和https.proxy設置後git:// url仍然不起作用時爲我工作的答案。 – 2013-07-09 21:16:09

2

你需要作出core.gitProxy點到代理命令,將通過您的SOCKS代理的git連接到遠程服務器。你可以創建一個腳本包含以下內容作爲代理命令:

nc -x <your_proxy_host>:<your_proxy_port> $1 $2 

兩個參數,代表遠程主機和端口,將混帳被傳遞到代理命令。如果你的名字這個腳本git-proxy並使其從$PATH訪問,你可以調用git config設置它:

git config --global --add core.gitProxy git-proxy