キャンペーン


2014年4月23日水曜日

GitHubをProxy経由で使う方法


久方ぶりの投稿。

GitHubというVCS(バージョンコントロールシステム)が近頃盛んに使われてるようなので使ってみた。



別に仕事で使っているわけではなく興味本意。

少し前まではSubVersionとか使ってたけど基本概念は同じっぽい。

違いはセキュリティが強化されている点とインターネット上利用が重点が置かれている点か?

みてる限りGitHubにアップされているモジュールをローカルに取り出してくることをCloneというらしい(初心者丸出し)。

例えば私のGitHubのtestモジュール(necoscard/test)であれば以下のようなGitコマンドでチェックアウトしてこれる。

git clone git@github.com:necoscard/test.git

実際これをするためにはクライアント側にオープンソースのGitをインストールしておく必要がある(WindowsでプチLinuxが堪能できます)。

もちろん使う以前にOpenSSHで公開鍵と秘密鍵をRSAで事前作っておきGitHubに公開鍵を登録しておく必要がある。これらのコマンドはGitをインストールすると同梱されてきます。

WindowsであればGitインストール後コマンドプロンプトでも上記を実行出来るのだが、通常Git BashというコンソールでGit関連のコマンを叩くことになる。



初心者は色々試行錯誤はすることにはなるものの、Gitはさほど難しいものではない。だがある職場のPROXYサーバー経由のVPN環境で使うとなるとアクセス制限がかけられていたり外部にダイレクトに繋がんなかったりする。

Gitに限ったことではないが、PROXY絡みの繋がんない障害はかなり多い気がしてならない。日々、試行錯誤を重ねている。


通常GitはSSH(port=22)を使用するのでHTTPやHTTPSしか通さないPROXYにおいては使えない。

ここで、めげなくてもSSH over HTTP Proxyというポート443を使うSSL経由で仮想的にSSH接続してGitHubにつなぐ逃げ道がある。

話が飛ぶかもしれないがGit接続時に使う暗号鍵を作る作業があるが、

ssh-keygen -t rsa

この暗号キー作成後にユーザーホームディレクトリ(Windows XPなら c:\document and settings\ユーザー)直下の.sshフォルダに以下のようなファイル(id_rsaやid_rsa.pub)が作成される。


gitHubにつなぐ時のキーは通常ここにある秘密鍵を使用される(GitHubのホスト側は公開鍵)。

PROXY経由でつなぐ場合はもう一つ以下の内容のconfigファイルの作成が必要で、これを用意しておくことでホストgithub.comへの接続はSSL経由で試行される。

(configファイルの内容)
Host github.com
  User git
  Port 443
  Hostname ssh.github.com
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes
  ProxyCommand connect.exe -H プロキシサーバのホスト:プロキシポート %h %p

これでPROXY環境下でGitHubへ繋ぐことができめでたしめでたしである。

尚、実際github.comにつなげる前に

以下のコマンドを叩いてgithubへ仮想SSH接続できることを確認すべし。
ssh -T git@github.com

簡単にまとめたが、結構ハマったのでconfigファイル作成のツボを役立てていただければ嬉しいです。

ここ のサイトが参考になりました。