きっかけ
GitHubで、リポジトリのcloneのURLが、気づいたらhttpsにrecommendedをつけるようになっていて、httpsが通る環境ならGitHubが使えるのではと思い、すこし調べてみました。
https推奨なのは?
公式のwhich-remote-url-should-i-useによると、要はfirewallとかで制限されていても、httpsはproxy経由などで使えるでしょう、ということ。GitHubにwebブラウザでアクセスできる環境なら、使えるはずと。
使い方(プロキシなしなら)
プロキシ経由しないでhttps通信してるなら、URLをhttpsのにするだけでOKです。(まず、ありえないでしょうが...)
git clone https://github.com/[user_name]/[repo_name].git
$ git remote -v
origin https://github.com/[user_name]/[repo_name].git (fetch)
origin https://github.com/[user_name]/[repo_name].git (push)
となっていれば、 git push origin master
でmasterにpushできます。
この際、GitHubのユーザ名とパスワードでの認証が必要になります。
二段階認証にしていたら、アクセストークンでの認証に変わります。(詳細はこちら)
git-credential-cache などで、認証情報を保持していれば、毎回やる必要はなくなるようです。
プロキシが必要なとき
このときは、gitにproxyサーバの設定を追加すれば、上記のやり方が使えるようになります。
ネットワーク管理者などにhttpプロキシサーバの情報を教えてもらいましょう。
git config --global http.proxy http://[proxy_host]:[proxy_port]
プロキシサーバの情報を気軽に聞けないとき
自分のマシンの設定から辿っていきましょう。(ここから先は自己責任でお願いします。)
IEの場合、
- 自動構成スクリプト (proxy.pac)
- プロキシサーバー
のいずれかが、レジストリに設定されているでしょう。
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet Settings
の下の
- AutoConfigURL
- ProxyServer
proxy.pacの場合、アクセス元とアクセス先に応じたproxyサーバの設定があるはずなので、そこから使えそうなを探しましょう。
ProxyServerの場合は、それをそのまま使えばいいはずです。
(unix系のマシンなら探しやすいかな...?)
やっぱりSSHでやりたいとき
ありがたいことにhttpsのポート443でgithubにssh接続できます。
https://help.github.com/articles/using-ssh-over-the-https-port/
sshにhttpプロキシの設定をつけくわえればOKです。
~/.ssh/config
に次を追記します。
Host github.com
User hoge
HostName ssh.github.com
Port 443
ProxyCommand connect -H [proxy_host]:[proxy_port] %h %p
注
windowsの場合は、connectに対応するものは、git for Windowsとセットになっているconnect.exeなどにする必要があります。
これで、つぎのようにできれば成功です。(githubに公開鍵を登録して、その秘密鍵で認証しているものとします。)
$ ssh -T git@github.com
Hi username! You've successfully authenticated, but GitHub does not
provide shell access
結論
webブラウザでGitHubにアクセスできるなら、proxyサーバがわかればGitHubは原理的には使えます。
認証が必要なproxyサーバだったり、proxyサーバの情報が秘匿されている場合などは、簡単には使えないですが...
参考サイト