notebook

都内でWEB系エンジニアやってます。

proxy環境でgitを使う

社内などのproxy環境でgitを使う

会社でproxyを使って社外にアクセスする場合、gitでアクセスしようとしてもはじかれる事があるかと思います。

いろいろ調べると出てきますがなにやらcorkscrewを使うといいらしい。。。

いろいろ断片的だったので実際に試してみて使えるようになったのでメモとして残しておきます。

環境はCentOS系は5と6でいけました。

corkscrewのインストール

wget http://www.agroman.net/corkscrew/corkscrew-2.0.tar.gz
tar zxf corkscrew-2.0.tar.gz
cd corkscrew-2.0
./configure
make
make install

インストールはこれだけでOK

認証ファイルの作成

vi /usr/local/bin/proxy_auth

user_name:password

プロキシのユーザー名、パスワードをコロンで挟んで記述します

実行ファイルの作成

vi /usr/local/bin/corkscrew_proxy.sh

corkscrew proxy.server 8080 $1 $2 /usr/local/bin/proxy_auth

chmod +x /usr/local/bin/corkscrew_proxy.sh

実行コマンドを記述したスクリプトを作成

実行権限を付与

シェルの設定に追記

  • .bashrc

export GIT_PROXY_COMMAND=/usr/local/bin/corkscrew_proxy.sh

これでgitコマンドを使うときにproxy経由でアクセスする事ができるようになりました。

やったね!

何度も行うのは面倒なのでスクリプト化してみました。

#!/bin/sh

USERNAME="user_name"
PASSWORD="password"
HOST="host"
PORT="port"

wget http://www.agroman.net/corkscrew/corkscrew-2.0.tar.gz
tar zxf corkscrew-2.0.tar.gz
cd corkscrew-2.0
./configure
make
make install

cat <<EOT > /usr/local/bin/proxy_auth
$USERNAME:$PASSWORD
EOT

cat << EOT > /usr/local/bin/corkscrew_proxy.sh
#!/bin/sh
CORKSCREW=`which corkscrew`
\$CORKSCREW $HOST $PORT \$1 \$2 /usr/local/bin/proxy_auth
EOT
echo 'created file /usr/local/bin/proxy_auth'

cat << EOT >> ~/.bashrc
export GIT_PROXY_COMMAND=/usr/local/bin/corkscrew_proxy.sh
EOT
echo 'created file /usr/local/bin/corkscrew_proxy.sh'
chmod +x /usr/local/bin/corkscrew_proxy.sh