イントラネット内からgitを使った外部アクセスは難しく、特にgitプロトコル(git://)やsvnプロトコル(svn+ssh:~)でのアクセスはHTTP Proxy経由でのアクセスにはproxy越え等が必要になります。
具体的には、git、repo を利用して次のようなエラーが発生することがあります。
repo sync .... curl: (22) The requested URL returned error: 404 Not Found Server does not provide clone.bundle; ignoring.
ここでは、HTTP Proxyサーバを通してトンネリングして解決する方法を紹介します
これにより、proxyでgithub、svn、gitサーバにアクセスできるようになります。
スポンサードリンク
HTTP Proxyサーバを通してトンネリングできる「Corkscrew」か「nc」を利用します。
Ubuntuの場合を前提に説明しています。
まずは、corkscrewを取得します。
$ sudo apt-get install corkscrew
次に設定ファイルを作ります。
「Proxy host名」「Proxy port名」の部分は保有しているproxy設定情報を記入してください。
$ sudo cat > proxy-cmd.sh #!/bin/bash CORKSCREW=`which corkscrew` $CORKSCREW <Proxy host名> <Proxy port名> $1 $2
そして、実行権限をつけてフォルダ移動しておきましょう。
$ sudo mv proxy-cmd.sh /usr/local/bin/proxy-cmd.sh $ sudo chmod 777 /usr/local/bin/proxy-cmd.sh
使い方は次のようになります。
$ GIT_PROXY_COMMAND=/usr/local/bin/proxy-cmd.sh git clone git://github.com/rails/rails.git
また、 git config に proxy 情報を記載すれば、「GIT_PROXY_COMMAND」を打つことなしに使えます。
$ git config --global core.gitproxy "proxy-cmd.sh"
$ git clone git://github.com/rails/rails.git
ちなみに、「.gitconfig」には次のように記載されています。
$ cat ~/.gitconfig [core] gitproxy = proxy-cmd.sh
もしくは次のコマンドでconfig情報を確認できます。
$ git config --list
UbuntuやMacは最初からncが入っているので、設定だけ行います。
「Proxy host名」「Proxy port名」の部分は保有しているproxy設定情報を記入してください。
$ sudo cat > proxy-cmd.sh #!/bin/bash nc -X connect -x <Proxy host名> <Proxy port名> $1 $2
あとは、corkscrewを利用する場合と同じです。
ローカルリポジトリ毎に設定できます。
$ cd [ローカルディレクトリ] $ git config user.name "個人のユーザ名" $ git config user.email "個人のメールアドレス"
git cloneを行うまでに発生するエラーを列挙しておきます。
サーバによっては認証が必要な場合があります。
error.GitError: manifests var: *** Please tell me who you are. Run git config --global user.email "個人のメールアドレス" git config --global user.name "個人のユーザ名" to set your account's default identity.
Gitに自分が何者なのか教えてあげる必要があります。
解決法は、説明どおり登録済のメールアドレスを次のように入力します。
$ git config --global user.email "you@example.com" $ git config --global user.name "Your Name"
スポンサードリンク