github.com,作為程式員的代碼倉庫,我們經常會用到。但有時候我們不能直接通過網路連結它,只能通過代理。
這裡我有一台Proxy 伺服器,起初我以為在終端設定了代理環境就行了,其設定為在你的~/.bashrc裡增加以下幾行:
[python] view plaincopyprint?
- export http_proxy="http://proxy-server:3128/"
- export https_proxy="http://proxy-server:3128/"
- 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?
- source ~/.bashrc
source ~/.bashrc
然後測試wget是沒有問題的,如下:
但使用git clone就不行
[python] view plaincopyprint?
- 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?
- sudo apt-get install socat
sudo apt-get install socat
2. 編輯一個指令檔,名字為git-proxy ,內容如下
[python] view plaincopyprint?
- #!/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=3128
- 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?
- cp git-proxy /home/lisp/local/bin/
cp git-proxy /home/lisp/local/bin/
將該目錄加入到PATH,加入以下內容到~/.bashrc,然後souce ~/.bashrc
[python] view plaincopyprint?
- export PATH=$PATH:/home/lisp/local/bin
export PATH=$PATH:/home/lisp/local/bin
[python] view plaincopyprint?
- source ~/.bashrc
source ~/.bashrc
4. 修改~/.gitconfig,加入以下行和代理
[python] view plaincopyprint?
- gitproxy = git-proxy
gitproxy = git-proxy
我.gitconfig檔案內容如下:
[python] view plaincopyprint?
- [push]
- default = simple
- [user]
- name = aborn
- email = loveaborn@foxmail.com
- [core]
- editor = emacs
- gitproxy = git-proxy
- [https]
- proxy = http://proxy-server:3128
- [http]
- 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?
- gcc -o connect connect.c
gcc -o connect connect.c
將編譯後的檔案connect也拷貝到/home/lisp/local/bin下
6. 修改~/.ssh/config,加入以下行
[python] view plaincopyprint?
- 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?
- ProxyCommand /home/lisp/local/bin/connect -H proxy-server:3128 %h %p
- Host github.com
- User loveaborn@foxmail.com
- Port 443
- 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?
- git clone git@github.com:aborn/ulitcs.git
git clone git@github.com:aborn/ulitcs.git
[python] view plaincopyprint?
- git push
git push