GitHubにプロキシ経由でpushする(Windows環境)

簡単そうで意外と簡単にできない。ググると色んな方法があるようで、それが混乱の元となっているように感じます。さらに、LinuxとWindowsという環境の違いもあるし。

GitHub自体はHTTPSに対応しているようなんですが、どうもうちの環境だとNGみたいです。なので将来的には、下記のHTTPプロキシの設定だけでいいかも。

git config http.proxy http://my.proxy.url:80

認証プロキシだとこうかな。

git config http.proxy http://user:pass@my.proxy.url:80

これでうまくいく幸せな人は、以降の話は不要なので無視してください。

残念ながら私はうまくいかなかった環境でした。で、とりあえずHTTPSはあきらめ、SSH経由でのpushでうまくいきました。参考にしたサイトはここです。

必要なもの

設定

  • msysgitはOpenSSHオプションでインストールしておいてください。
  • SSH認証鍵の作成
    • 下記コマンドで作成します。色々と聞かれますが全部エンターでもおっけ。パスフレーズを設定したければ設定してください。
ssh-keygen
  • これで%HOME%\.sshフォルダ以下に、id_rsaとid_rsa.pubができあがります。
  • 生成したid_rsa.pubの中身をクリップボードにコピーし、GitHubに登録しておきます。
  • %HOME%\.ssh\config ファイルを作成し、下記内容を書きます。これがプロキシ経由でGitHubのSSHサーバにアクセスする設定となっています。
ProxyCommand C:/tools/connect.exe -H username@proxy.example.com:443 %h %p

Host github.com
User git
Port 22
Hostname github.com
IdentityFile "C:\Document and Settings\username\\.ssh\id_rsa"
TCPKeepAlive yes
IdentitiesOnly yes

Host ssh.github.com
User git
Port 443
Hostname ssh.github.com
IdentityFile "C:\Document and Settings\username\\.ssh\id_rsa"
TCPKeepAlive yes
IdentitiesOnly yes
    • 用意したconnect.exeをProxyCommandで設定しておきます。これで、SSH over HTTP Proxyができるようになります。
    • これはGitとは無関係であり、HTTPプロキシの背後からSSH接続したい場合に有効なテクニックなので覚えておいて損はないです。

以上で設定は終わりです。後はリポジトリに対して、SSH用のURLでアクセスすればOK。