tinyproxy で proxy 経由の git clone を行う設定
※proxy サーバとして、tinyproxy を立てているとする。
tinyproxy の install は、tinyproxy の install と、proxy 経由での yum install - tkuchikiの日記 参照(yum install するだけだが)。
http, https proxy の設定
proxy 経由で git clone をする際に、http, https で git repositroy にアクセスできる場合は、
git config --global http.proxy http://example-proxy.com:8888/ git config --global https.proxy http://example-proxy.com:8888/
を実行すると、
# ~/.gitconfig [http] proxy = http://example-proxy.com:8888/ [https] proxy = http://example-proxy.com:8888/
のように設定され、git clone することができる。
しかし、git プロトコル ? (git://) でのアクセスは、
これだけでは git clone できない。
色々調べてみた結果、corkscrew という http proxy を通して ssh tunneling するツールを使って解決できるようだ。
以降の手順は、gitをHTTP Proxy経由で利用したい場合の対処法 - 元RX-7乗りの適当な日々 と Corkscrewでgitのproxy越え(その2) - ただのにっき(2009-03-26) を参考にさせていただいた。
ありがとうございます。
corkckrew のインストール
corkscrew のページ(corkscrew)から、。
最新版(執筆時は 2.0)をダウンロードする。
wget http://www.agroman.net/corkscrew/corkscrew-2.0.tar.gz
install は gcc が入っていれば特に意識することなく、通常の make install 手順で通る。
tar zxvf corkscrew-2.0.tar.gz cd corkscrew-2.0 ./configure make && make install
これで、/usr/local/bin/corkscrew が入る。
ヘルプを見ると、
$ corkscrew corkscrew 2.0 (agroman@agroman.net) usage: corkscrew <proxyhost> <proxyport> <desthost> <destport> [authfile]
となっている。
git proxy の設定
本題に入って git:// を proxy できるようにする。
gitproxy の設定
git config --global core.gitproxy git-proxy
実行すると以下の設定が追加される。
# ~/.gitconfig
[core]
gitproxy = git-proxy
この設定は、git clone をする際に、git-proxy というコマンドをかませるという設定。
コマンド名はなんでもよい(と思う)。
git-proxy コマンドの実装
http proxy の設定をする、http_proxy 環境変数を使う。
http_proxy の設定を .bash_profile に書く。
# ~/.bash_profile export http_proxy=http://example-proxy.com:8888
source するのも忘れずに。
. ~/.bash_profile
そこから、domain と port を抽出して使うようにした。
あとは、これを PATH が通っているところに設置して、実行権限を与えておく。
chmod +x git-proxy
mv git-proxy /usr/local/bin/
git clone する側の設定はこれで完了。
tinyproxy の設定変更
このままでは、git:// で clone する時に使う 9418 port が通っていないので git clone できない。
tinyproxy の設定を変更することで通すことができる。
# /etc/tinyproxy/tinyproxy.conf + ConnectPort 9418
設定を反映。
service tinyproxy reload
これで、git clone git://... が proxy 経由で実行できるようになる。