会社や学校の中にいる場合、インターネットへアクセスする際に、Proxy(プロキシ)経由でのアクセスとなるシーンがよく見られるのではないでしょうか。
その場合、イントラネット内から分散型バージョン管理システム(分散SCM)であるgitを使った外部アクセスは難しく、特にサーバ側がgit-daemonで稼動している場合は、gitプロトコル(git://)でのアクセスとなり、HTTP Proxy経由でのアクセスにはコツが必要となります。
ということで、Proxy越えにチャレンジしてみることにします。
Corkscrewのインストール
まず、HTTP Proxyサーバを通してトンネリングできる「Corkscrew」を利用します。
# apt-get install corkscrew
私は、Debian使いですので、サクっとaptでインストールしました。
そうではない場合も、他パッケージ管理システムでもあると思いますし、下記サイトからソースをダウンロードしてインストールしてもOKです。
- Corkscrew is a tool for tunneling SSH through HTTP proxies.
- http://www.agroman.net/corkscrew/
$ ./configure $ make $ sudo make install
ソースからのインストールも、お決まりのパターン。
Proxyサーバの設定
で、「Corkscrew」のインストール完了後は、Proxyサーバの設定が必要です。
# Proxyサーバの管理者に手土産を持参してお願いして下さい(^^;
私の試した環境では、「squid」が動いていますので、squidの設定を変更します。
具体的には、以下のようにgitプロトコルで利用するポート番号"9418"を許可する設定をsquid.confに記述しておきます。
acl SSL_ports port 443 563 9418 ・・・略・・・ http_access deny CONNECT !SSL_ports
squid.confの編集が終われば、squidをrestartして、設定を反映させます。
で、その後、任意の場所にファイルを作成(ex. ${HOME}/bin/git-proxy.sh)し、
#!/bin/sh corkscrew <Proxyサーバホスト名> <ポート番号> $1 $2
↑の内容でファイル(ex. ${HOME}/bin/git-proxy.sh)を編集します。
これで前準備は完了。
Proxy経由でのgitコマンド実行
上記で作成したファイル(ex. ${HOME}/bin/git-proxy.sh)を指定して、、、
$ GIT_PROXY_COMMAND=${HOME}/bin/git-proxy.sh git clone git://github.com/rails/rails.git
こんな感じでコマンド(上記例はgithubのRailsリポジトリ)を打てば、プロキシ経由でのgitアクセスが可能です!
Let's Enjoy!
おまけ(Proxyアクセス時の認証)
ちなみにcorkscrewコマンドのヘルプを見てみると以下のようになっていて、
$ corkscrew -h corkscrew 2.0 (agroman@agroman.net) usage: corkscrew <proxyhost> <proxyport> <desthost> <destport> [authfile]
Proxyサーバのアクセス時に認証がかかる場合は、任意のファイルを作成し、
username:password
のフォーマットで編集し、上記の[authfile]でファイルを指定してやると良いらしい。
参考
- 作者: Travis Swicegood,でびあんぐる
- 出版社/メーカー: オーム社
- 発売日: 2009/08/12
- メディア: 単行本(ソフトカバー)
- 購入: 25人 クリック: 305回
- この商品を含むブログ (101件) を見る