WindowsのGitbashで、Githubをssh経由で操作できるようにセットアップした

画面キャプチャはクラシックな感じですが、環境はWindows7でやりました。

1. Gitをインストール

http://git-scm.com/ からDownload for Windowsをクリックして、インストーラをダウンロードします。
※バージョンは1.8.0-preview20121022でした。

2.インストーラをすすめる

ダウンロードしたインストーラのアイコンをダブルクリックして起動して、進めていきます。
f:id:yuhei_kagaya:20121211215915j:plain

f:id:yuhei_kagaya:20121211215957j:plain

f:id:yuhei_kagaya:20121211220032j:plain

↓ここもこのままでオッケー
f:id:yuhei_kagaya:20121211220055j:plain

f:id:yuhei_kagaya:20121211220129j:plain

↓「Run Git from the Windows Command Prompt」を選びます。
f:id:yuhei_kagaya:20121211220158j:plain

↓「Use OpenSSH」を選びます
f:id:yuhei_kagaya:20121211220248j:plain

↓「Checkout as-is, commit as-is」を選びます
f:id:yuhei_kagaya:20121211220416j:plain

f:id:yuhei_kagaya:20121211220504j:plain

3. 設定

デスクトップにできた、「Git Bash」のアイコンをダブルクリックしてGitBashを起動します。
コマンドラインで個人の識別情報を設定していきます。
core.quotepathはgit logなどでUTF-8の日本語コメントを見る為に必要です。

git config --global user.email 'メールアドレス'
git config --global user.name '名前'
git config --global core.quotepath off

exit

C:\Users\ウィンドウズのログイン名\.gitconfig に設定ファイルが作成されます。

4.秘密鍵と公開鍵を作る

もういちど、GitBashを起動します。

mkdir ~/.ssh
cd ~/.ssh
ssh-keygen -t rsa -C 'メールアドレス'
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/ウィンドウズのログイン名/.ssh/id_rsa): #←エンターを押します
Enter passphrase (empty for no passphrase): #←パスフレーズを入力してエンターを押します。
Enter same passphrase again: #←パスフレーズを再入力してエンターを押します。

5. 公開鍵をGithubに登録します。

そのままコマンドで、公開鍵の内容をクリップボードにコピーします。

clip < ~/.ssh/id_rsa.pub

ブラウザで、GithubのAccount settingsページを開きます。
左メニューのSSH Keysをクリック、「Add SSH Keys」をクリックします。

Titleには、何か自分でわかりやすい名前を入力します。
Keyに、先ほどクリップボードにコピーした公開鍵の内容を貼り付けます。
「Add key」をクリックしたあと、Githubのパスワードが聞かれますので、正しく入力してConfirm passwordをクリックします。

これで公開鍵が登録されました。

6. リポジトリをcloneする

GitBashを使って、デスクトップに既存のリポジトリをcloneしてみます。

cd ~/Desktop/
git clone git@github.com:Githubのユーザ:リポジトリ名.git

The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is XX:XX:XX:XX:.....
Are you sure you want to continue connecting (yes/no)? yes #yesと入力してエンターを押します。
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.
Enter passphrase for key '/c/Users/ウィンドウズのログイン名/.ssh/id_rsa': # ←上記4で決めた、パスフレーズを入力してエンターを押します。

cloneできました。これでオッケー。


2012.12.14追記です

7. Pagentを使ってパスフレーズの入力を省く

「git pullや git push するときにいちいちパスフレーズを入力するのがめんどくさい」
という場合には、Pagentを使うと入力を省くことができて便利です。

PuTTYのPagentとTortoiseSVNのTortoisePlinkを使います。

※TortoiseGitのPlinkではバグがあるようですので、あえてTortoiseSVNのほうを使います。実際にTortoiseGitのPlinkでやってみたのですが、うまく接続できませんでした。

以下はPagentを動かすまでの手順です。

8. PuttyTortoiseSVNをインストール

それぞれをダウンロードして、インストーラにしたがってデフォルトのままインストールします。

9. GIT_SSH環境変数を設定

コントロールパネル>システムとセキュリティ>システムのメニューを開き、
「システムの詳細設定」をクリックしてシステムのプロパティを開きます。

環境変数ボタンを押します。
f:id:yuhei_kagaya:20121214182552j:plain

新規のボタンを押すと、次のような画面が出ます。
ユーザー環境変数、システム環境変数のどちらでもよいです。
f:id:yuhei_kagaya:20121214182904j:plain

変数名に、GIT_SSH と入力します。
変数値は、C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe と入力します。
TortoiseSVNをインストールしたパスを変更した場合には、適切なTortoisePlink.exeのパスを入力します。

10. 秘密鍵をppkファイルに変換する

4で作成したOpenSSH形式の秘密鍵を、Pagentが読むファイル形式に変換します。
スタートメニュー>puttyから、「PuTTYgen」を起動します。
f:id:yuhei_kagaya:20121214181407j:plain

変換>鍵のインポートから、id_rsaを指定して読み込みます。
場所は、C:\Users\ウィンドウズのログイン名\.ssh\id_rsaです。
秘密鍵を作成したときのパスフレーズを聞かれますので、入力します。

秘密鍵の保存ボタンを押して、適当な名前を付けてPuTTY秘密鍵ファイル(*.ppk)を保存します。
f:id:yuhei_kagaya:20121214181653j:plain

11. Pagentを起動して秘密鍵を追加

スタートメニュー>puttyから、Pagentを起動します。
タスクバーに帽子を被ったコンピューターのようなマークがでてくるので、ダブルクリックします。
f:id:yuhei_kagaya:20121214182134j:plain

鍵の追加ボタンを押して、10で作成したppkファイルを指定したあと、閉じます。
これで秘密鍵が登録されました。

12. Gitbashからgit cloneなどしてみる

Gitbashから、git cloneしてみます。すると、Pagentから「次の鍵への照会を許可しますか?」と聞かれるので、Yesを選択します。
f:id:yuhei_kagaya:20121214183456j:plain

これでオッケー。いちいちパスフレーズを入力する必要がなくなりました。

13. PagentをWindows起動時に鍵を登録した状態で自動起動させる

さらに、Pagentをいちいち立ち上げるのも面倒なので、
Windows起動時に鍵を追加した状態でPagentが自動で起動する状態にしておきます。


デスクトップで、右クリック>新規追加>ショートカットの作成 を選びます。
f:id:yuhei_kagaya:20121214184553j:plain

項目の場所に次のように「pagent.exeのパス」+「半角スペース」+「ppkファイルのパス」を入力し、ショートカットを作成します。

"C:\Program Files (x86)\PuTTY\pageant.exe" "ppkファイルのパス"

作成したショートカットをドラッグして、スタートメニュー>スタートアップに入れておきます。


これでPagentを起動して鍵を追加する作業も省くことができました。