tkuchikiの日記

Linux やプログラミングについて書きます。

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 経由で実行できるようになる。