プロキシ環境下でSSH経由の git clone を行うための、corkscrew を使ったSSHトンネルの設定方法を説明します。


プロキシが導入されている職場の場合、git clone できない場合があります。 HTTPS経由でよいなら下記の記事の設定で行けるようになるかと思います。 WSLのProxy設定方法 しかし sshで cloneした場合はこれではできません。 今回は Proxy 環境で ssh で git clone する方法を説明します。

プロキシ環境下のエラー

社内プロキシの環境でcloneしようとすると下記のようにエラーになる場合があります。 サーバにアクセスできない場合です。

1
2
3
4
5
$ git clone --verbose git://git.yoctoproject.org/poky.git
Cloning into 'poky'...
Looking up git.yoctoproject.org ... done.
Connecting to git.yoctoproject.org (port 9418) ... fatal: unable to connect to git.yoctoproject.org:
git.yoctoproject.org[0: 198.145.29.90]: errno=Connection timed out

corkscrew

上記の問題を解決するために Corkscrew を使います。 インストールはUbuntuなら apt でできます。

1
sudo apt-get install corkscrew

つぎにその corkscrew をラップするスクリプトを作成します。 どこでもいいのですが下記の例では ~/bin/ 以下につくっています。 proxy-hostproxy-portのところにはお使いの実際のプロキシのURL、ポートを指定してください。

1
2
3
4
5
6
$ echo '#!/bin/bash' > ~/bin/git-proxy.sh
$ echo "/usr/bin/corkscrew proxy-host proxy-port $1 $2" >> ~/bin/git-proxy.sh
$ chmod +x ~/bin/git-proxy.sh
$ cat ~/bin/git-proxy.sh
#!/bin/bash
/usr/bin/corkscrew proxy-host proxy-port $1 $2

あとは GIT_PROXY_COMMAND 環境変数に上記スクリプトを設定し、 PATH変数にそのスクリプトのあるディレクトリを追加します。 下記のようにbashrc に追加しておけばよいかと。

1
2
3
4
5
6
$ echo "export PATH=$PATH:~/bin" >> ~/.bashrc
$ echo "export GIT_PROXY_COMMAND=~/bin/git-proxy.sh" >> ~/.bashrc
$ tail ~/.bashrc -n2
export PATH=$PATH:~/bin
export GIT_PROXY_COMMAND=~/bin/git-proxy.sh
$ source ~/.bashrc

これで git clone できるようになったはずです。

まとめ

Proxy環境でgit clone する場合にはcorkscrewを使えばOKです。 GIT_PROXY_COMMAND を設定してください。