2018年8月24日 星期五

Ubuntu Linux下通過代理(proxy)(及socat)使用git

https://blog.csdn.net/loveaborn/article/details/24575659

github.com,作為程序員的代碼倉庫,我們經常會用到。但有時候我們不能直接通過網絡鏈接它,只能通過代理。
這裡我有一台代理服務器,起初我以為在終端設置了代理環境就行了,其設置為在你的~/.bashrc裡增加以下幾行:
  1. export http_proxy="http://proxy-server:3128/"
  2. export https_proxy="http://proxy-server:3128/"
  3. export ftp_proxy="http://proxy-server:3128/"

設置好以後,使用以下命令使其啟動
source ~/.bashrc

然後測試wget是沒有問題的,如下:
但使用git clone就不行
 git clone git@github.com:aborn/ulitcs.git 
通過這兩篇文章知道了原因:在windows上通過代理訪問github.com  和  Using git over proxy
配製過程分為以下幾步:
1. 安裝socat,在ubuntu下使用以下命令安裝
 sudo apt-get install socat 

2. 編輯一個腳本文件,名字為git-proxy ,內容如下
  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

3. 將git-proxy放到一個目錄下,如我將它放到/home/lisp/local/bin,並將該目錄加入到PATH
cp git-proxy /home/lisp/local/bin/
將該目錄加入到PATH,加入以下內容到~/.bashrc,然後souce ~/.bashrc
export PATH=$PATH:/home/lisp/local/bin

source ~/.bashrc

4. 修改~/.gitconfig,加入以下行和代理
gitproxy = git-proxy
我.gitconfig文件內容如下:
  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

5.下載轉換協議文件connect.c,下載地址點擊
只要下載connect.c文件即可,然後編譯
gcc -o connect connect.c

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

6. 修改~/.ssh/config,加入以下行
 ProxyCommand /home/lisp/local/bin/connect -H proxy-server:3128 %h %p 

我的~/.ssh/config文件內容如下:
  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

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

以上步驟完成後,就行了,如下截圖:
git clone git@github.com:aborn/ulitcs.git   
git push



注意:
1. 上面的proxy-server根據你的代理,設置為替換為你的代理服務器的ip地址或者域名
2.上面的connect.c文件、編譯好的connect文件和git-proxy文件,也可以從這裡下載connect.tar.gz  和git-proxy
3. 我的操作系統為Ubuntu 14.04LTS

沒有留言: