Ubuntu Linux下通過代理(proxy)使用git上github.com

來源:互聯網
上載者:User

github.com,作為程式員的代碼倉庫,我們經常會用到。但有時候我們不能直接通過網路連結它,只能通過代理。

這裡我有一台Proxy 伺服器,起初我以為在終端設定了代理環境就行了,其設定為在你的~/.bashrc裡增加以下幾行:

 

[python] view plaincopyprint?
  1. export http_proxy="http://proxy-server:3128/"  
  2. export https_proxy="http://proxy-server:3128/"  
  3. export ftp_proxy="http://proxy-server:3128/"  
export http_proxy="http://proxy-server:3128/"export https_proxy="http://proxy-server:3128/"export ftp_proxy="http://proxy-server:3128/"

設定好以後,使用以下命令使其啟動

 

 

[python] view plaincopyprint?
  1. source ~/.bashrc  
source ~/.bashrc

然後測試wget是沒有問題的,如下:

 

但使用git clone就不行

 

[python] view plaincopyprint?
  1. git clone git@github.com:aborn/ulitcs.git   
 git clone git@github.com:aborn/ulitcs.git 
通過這兩篇文章知道了原因:在windows上通過代理訪問github.com 和 Using git over proxy

 

配製過程分為以下幾步:

1. 安裝socat,在ubuntu下使用以下命令安裝

 

[python] view plaincopyprint?
  1. sudo apt-get install socat   
 sudo apt-get install socat 

2. 編輯一個指令檔,名字為git-proxy ,內容如下

 

 

[python] view plaincopyprint?
  1. #!/bin/sh   
  2. # Use socat to proxy git through an HTTP CONNECT firewall.   
  3. # Useful if you are trying to clone git:// from inside a company.   
  4. # Requires that the proxy allows CONNECT to port 9418.   
  5. #   
  6. # Save this file as gitproxy somewhere in your path   
  7. # (e.g., ~/bin) and then run   
  8. # chmod +x git-proxy   
  9. # git config --global core.gitproxy git-proxy   
  10. #   
  11. #   
  12. # Configuration. Common proxy ports are 3128, 8123, 8000.   
  13. _proxy=proxy-server  
  14. _proxyport=3128  
  15. exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport  
#!/bin/sh# Use socat to proxy git through an HTTP CONNECT firewall.# Useful if you are trying to clone git:// from inside a company.# Requires that the proxy allows CONNECT to port 9418.## Save this file as gitproxy somewhere in your path# (e.g., ~/bin) and then run# chmod +x git-proxy# git config --global core.gitproxy git-proxy### Configuration. Common proxy ports are 3128, 8123, 8000._proxy=proxy-server_proxyport=3128exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport

3. 將git-proxy放到一個目錄下,如我將它放到/home/lisp/local/bin,並將該目錄加入到PATH

 

 

[python] view plaincopyprint?
  1. cp git-proxy /home/lisp/local/bin/  
cp git-proxy /home/lisp/local/bin/
將該目錄加入到PATH,加入以下內容到~/.bashrc,然後souce ~/.bashrc

 

 

[python] view plaincopyprint?
  1. export PATH=$PATH:/home/lisp/local/bin  
export PATH=$PATH:/home/lisp/local/bin

[python] view plaincopyprint?
  1. source ~/.bashrc  
source ~/.bashrc

 

 

4. 修改~/.gitconfig,加入以下行和代理

 

[python] view plaincopyprint?
  1. gitproxy = git-proxy  
gitproxy = git-proxy
我.gitconfig檔案內容如下:

 

 

[python] view plaincopyprint?
  1. [push]  
  2.     default = simple  
  3. [user]  
  4.     name = aborn  
  5.     email = loveaborn@foxmail.com  
  6. [core]  
  7.     editor = emacs  
  8.     gitproxy = git-proxy  
  9. [https]  
  10.     proxy = http://proxy-server:3128  
  11. [http]  
  12.     proxy = http://proxy-server:3128  
[push]default = simple[user]name = abornemail = loveaborn@foxmail.com[core]editor = emacsgitproxy = git-proxy[https]proxy = http://proxy-server:3128[http]proxy = http://proxy-server:3128

 

5. 下載轉換協議檔案connect.c,點擊

只要下載connect.c檔案即可,然後編譯

 

[python] view plaincopyprint?
  1. gcc -o connect connect.c  
gcc -o connect connect.c

將編譯後的檔案connect也拷貝到/home/lisp/local/bin下

 

 

6. 修改~/.ssh/config,加入以下行

 

[python] view plaincopyprint?
  1. ProxyCommand /home/lisp/local/bin/connect -H proxy-server:3128 %h %p   
 ProxyCommand /home/lisp/local/bin/connect -H proxy-server:3128 %h %p 

我的~/.ssh/config檔案內容如下:

 

 

[python] view plaincopyprint?
  1. ProxyCommand /home/lisp/local/bin/connect -H proxy-server:3128 %h %p  
  2. Host github.com  
  3. User loveaborn@foxmail.com  
  4. Port 443  
  5. Hostname ssh.github.com  
ProxyCommand /home/lisp/local/bin/connect -H proxy-server:3128 %h %pHost github.comUser loveaborn@foxmail.comPort 443Hostname ssh.github.com

注意這裡的connect檔案目錄與第5步放置的目錄一致。

 

 

以上步驟完成後,就行了,如下:

 

[python] view plaincopyprint?
  1. git clone git@github.com:aborn/ulitcs.git     
git clone git@github.com:aborn/ulitcs.git   

 

 

[python] view plaincopyprint?
  1. git push  
git push


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.