A smart proxy switcher wrapper, supports http, https, ftp, rsync, ftp, connc It can automatically detect your network environment and set proxy for you.
If you usually switch the network environment (maybe home with no-proxy and workplace with proxy), it may help you a lot.
Tested in zsh and bash.
Screenshot
Install
Simply source it in your .zshrc, or any shell script resource file like this:
source /path/to/smart_switcher.sh
and, make sure set your proxy_server/gateway in .smart_switcher.sh
Usage
Normally, it antomatically executes when you login in.
supports cecho, who will bring some colors for you.smart_switcher
connect is required if proxy is supported in
ssh and git. You can install it easily in path ./usr/bin/connect
Git 目前支援的三種協定
git://
、ssh://
和http://
,其代理配置各不相同:core.gitproxy
用于git://
协议,http.proxy
用于http://
协议,ssh://
协议的代理需要配置 ssh 的ProxyCommand
參數。對於所有的協定全部使用 SSH 隧道進行代理
GIT 協定的配置
建立
/path/to/socks5proxywrapper
文件,使用 https://bitbucket.org/gotoh/connect 工具進行代理的轉換,各發行版一般打包為 proxy-connect 或 connect-proxy。配置 git
或
SSH 協定的配置
建立
/path/to/soks5proxyssh
檔案配置 git 使用該 wrapper
當然也可以直接設定
~/.ssh/config
的ProxyCommand
HTTP 協定的設定
所有協定全部使用 http 代理
在前一部分的基礎上,
/path/to/socks5proxywrapper
文件改為HTTP 協定配置
針對網域啟用代理
gitproxy 參數提供
* for *
结构,具体看man git-config
的 core.gitproxy 部分。可以為該倉庫設定 http.proxy 或 core.gitproxy
http://www.kernel.org/pub/software/sc...
給git設定代理可以用yanyaoer的方法。
至於你說的ssh+pac+socks的代理,是跟yanyaoer說的git代理不衝突的。
socks代理程式是一個電路級的底層代理,而git config中設定的代理是應用級的。
舉個例子,你的pac裡設定了 github.com 走 socks 127.0.0.1:7070 ;而git config裡有為github.com設定了走 proxy.server.com 的代理。
那麼這個時候,你進行git操作,所有的網路請求走到socks那一層的時候,已經是proxy.server.com了,自然就不受影響,會直接出去。
tsocks - http://tsocks.sourceforge.net/
$ tsocks git clone git@github.com:xxx/xxx.git
從bitbucket克隆用ssh協定的話可以用所有ssh的代理使用方式
例如如果是http代理或socks代理,可以使用 http://bent.latency.net/bent/git/goto... 這個小程式做主機的
ProxyCommand
如果是你說的有某個中轉伺服器的話,可以用遠端主機上的
nc
做nc
做ProxyCommand
http://www.undeadly.org/cgi?action=ar...關於你說的區分流量,可以在
~/.ssh/config
裡進行區別設定。例如我之前用的配置這樣
git clone ssh://git@bitbucket.org/XXXX
時會自動呼叫這裡定義的git clone ssh://git@bitbucket.org/XXXX
时会自动调用这里定义的ProxyCommand
github ssh proxy | github ssh 協定代理配置
配置一個
proxy-wrapper
腳本給它增加一個可執行權限
配置
.ssh/config
, 對 github.com 設定一個代理命令必須全部走ssh協定
git 協定請參考 [Using GIT through a SOCKS proxy](http://twopenguins.org/tips/git-throu...).
參考
根據1L的答案寫了一個smart_switcher,可以自動判別並設定各種代理,基於http代理配置,特別適合office有代理、家裡無代理各種切換的情況,不過簡化到超簡單,只需設定你的網關IP和Port即可。
ReadMe在此。 。 。
smart_switcher
A auto-detect proxy switcher fot http, https, ftp, rsync, ssh, git protocols.
Overview
A smart proxy switcher wrapper, supports http, https, ftp, rsync, ftp, connc It can automatically detect your network environment and set proxy for you.
If you usually switch the network environment (maybe home with no-proxy and workplace with proxy), it may help you a lot.source /path/to/smart_switcher.sh
and, make sure set your proxy_server/gateway in .
Usagesmart_switcher.sh
supports cecho, who will bring some colors for you.
connect is required if proxy is supported insmart_switcher
ssh and git. You can install it easily in path .
/usr/bin/connect
git協定連接方式使用的是ssh同伺服器通訊,設定ssh走sock5代理連接伺服器的同時也解決了git的代理問題。
1.
將上述程式碼使用gcc編譯並保存在環境變數目錄中同時改名connect
進入.ssh目錄新建
檔案config
檔案 proxy-wrapper
上面有不少答案了。假設用程式在無狀態、無工作目錄的情況下運行git指令,利用
-c
参数可以在运行时重载git配置,包括关键的http.proxy
例如:
最優方案是proxychains(https://github.com/haad/proxychains)。
下面命令運行程式program
$ proxychains program
它強制給定程式發起的TCP連接通過事先配置的代理。至少在Linux上,它比“SOCKS代理轉為HTTP代理”用途更廣泛。兩者互為補充,可以涵蓋所有需要代理的情境。
以Git為例,沒有proxychains的話,就必須為每個協定(http, git, ssh)依照git文檔的要求分別設定代理,過程複雜且不穩定。有了proxychains,這些都可以忘掉了!
$ sudo apt-get install proxychains
開啟/etc/proxychains.conf,註解掉下面這行(disable遠端DNS解析。有DNS污染風險。下文講如何解決enable不work的問題。)
proxy_dns
最後新增如下:
socks5 134.64.206.85 1081
$ proxychains git clone git://github.com/yuzhichang/cppdep
$ sudo proxychains apt-get update
這裡134.64.206.85:1081是SOCKS代理位置。