Cygwinで会社のファイアーウォール越しにGitHub(ついでにGistも)にアクセスする設定メモ

一応、以下を参考にした
Big Sky :: SSHポートが通らなくてもgithub.comにpushする方法

ただ、うちの会社の環境だと上記の設定だけではOwner cloneができなかったり、pushができなかったり名前解決すらできない状態(たぶん、社内一般の端末からは社内に存在するホストの名前解決しかできず、社外のホストの名前解決はproxyサーバのみに許されているような感じ?)だったので、以下のページにあるようなconnect.c*1というSSHのProxyCommandを使う方法も合わせて行った。

SSH Proxy Command connect.c - kanamono's wiki page

メモっとかないと忘れてしまいそうなので、とりあえず、やったことのまとめ。

Git/OpenSSHのインストール

まずGit
/etc/postinstallにスクリプトができるので実行するのを忘れずに。

$ cyg-port install git
$ cd /etc/postinstall
$ ./git.sh

次にOpenSSH

$ cyg-port install openssh

git-config

基本的な設定

$ git config --global user.name "snaka"
$ git config --global user.email "snaka.gml@gmail.com"

GitHub用の設定

$ git config --global github.user snaka
$ git config --global github.token ****************************

tokenは https://github.com/account を参照

参考

Help.GitHub

OpenSSHの設定/Keyペアの生成と登録

Keyの作成

$ ssh-keygen -t dsa -C "snaka.gml@gmail.com"

すると ~/.ssh に id_dsa と id_dsa.public ができる
id_dsa.publicの内容はGitHubのアカウントページに登録する

$ cat id_dsa.public | putclip

クリップボードに内容がコピーされるので、 https://github.com/account の所定の場所に登録する。

参考

Help.GitHub

OpenSSHの設定/ProxyCommandの作成と登録

以下のサイトから connect.c を取得してビルド

$ wget http://www.taiyo.co.jp/~gotoh/ssh/connect.c
$ gcc connect.c -o connect

で作成された connect コマンドを適当な場所に格納しておいて、
~/.ssh/config を開いて編集

Host github.com
    User git
    Hostname ssh.github.com
    Port 443
    ProxyCommand /home/snaka/bin/connect -d -H address.of.your.proxy.here:8080 %h %p
    IdentityFile /home/snaka/.ssh/id_dsa

Host gist.github.com
    User git
    Hostname ssh.github.com
    Port 443
    ProxyCommand /home/snaka/bin/connect -d -H address.of.your.proxy.here:8080 %h %p
    IdentityFile /home/snaka/.ssh/id_dsa

"address.of.your.proxy.here"はちゃんとしたアドレスに置き換える。

*1:コンパイルするとconnectになる