ssh回り、いつも悩みながら適当に設定してなんとなく使えるようになっているのだけど、今回も相当悩んで、やっとなんとなく動くようになったので、今後同じことを繰り返すであろう未来の自分へのメモ。
(これの通りにやって動くようになるかはわからないので過度な期待しないように)


■SourceTreeのインストール

cmd使うから厳密にはいらないかもしれないけど、これを使った”おまじない”が必要となる。
そして、puttygen/pageant/plinkもここに含まれている。
(C:\Program Files (x86)\Atlassian\SourceTree\tools\putty)

■ssh用の公開鍵、秘密鍵を作る

puttygenを使って、公開鍵・秘密鍵なるものを作る
(C:\Program Files (x86)\Atlassian\SourceTree\tools\putty/puttygen.exe)
保存するときのファイル名(この名前が大切かもしれない)
秘密鍵:id_rsa.ppk
公開鍵:id_rsa.pub
※OpenSSH形式の秘密鍵・公開鍵に変換しておく必要があるかもしれないのでやっておく
→Conversions → Export OpenSSH key:id_rsa(拡張子なしとする)

参考 → SSH(PuTTY)設定

秘密鍵、公開鍵の保存場所はとても大事
例:C:\Users\393\.ssh\id_rsa.ppk
カレントユーザー直下に.sshフォルダを作ってそこに置く。
(※.sshフォルダは、cmdから、mkdirコマンドを使わないと作れない)

■githubにsshキーを設定する

githubにログインして、settings→SSH keys → Add SSH keyで、
key欄にはさっき作ったやつでputtygenに表示されているkeyをコピペする。

■Gitのインストール

gitfor windowsからDownload.
※インストール時のラジオボタンの設定はちょっと変更する。

・Adjusting your PATH environment > Use Git from the Command Pronmpt
→cmdで、gitコマンドが使えるように環境変数が設定される

・Choosing the SSH executable > Use(Tortoise)Plink
→sshのときplinkを使うように環境変数が設定される
(TortoiseってあるけどインスコしてないせいかplinkまでのpathはSourceTree内のplink.exeになってる)

・Configuring the line ending conversions > Checkout as-is,commit Unix-style line endings
→改行コードが変わる(ここはデフォルトでもいいかも)

cmdでgitをたたいてなんかでればうまくいっている

■pageantにprivate keyをadd

pageantを起動して上で作った秘密鍵をadd keyしておく。
(C:\Program Files (x86)\Atlassian\SourceTree\tools\putty/pageant.exe)
※スタートアップに登録しておくといちいち起動しなくていいから楽。

■githubのリポジトリをcmdからクローン(失敗するはず)

cmdを開いて、githubのリポジトリをcloneしてみる
例:git clone git@github.com:hoge/moja.git

こんなエラーがでるはず。
Disconnected: No supported authentication methods available (server sent: publickey..)

■SourceTreeでクローンしてみる

SourceTree上でsshパスを使って、githubのcloneを試みると、初回だけなんかの認証的なYes/noなポップアップがでる
↓こんなの
popup

Yesを選択する。(これが上に書いていた”おまじない”)
(設定に間違いはなければSourceTree上でもこのままcloneできる)

■githubのリポジトリをcmdからクローン

“おまじない”のおかげでさっきでたエラーはでなくなっている
githubに限らず、bitbucketとかbacklogでもSSHキーを登録したあと1発目のcmdからcloneしようとすると上述のエラーがでるので、SourceTreeでクローンしようとすると、認証のポップアップがでるから、それをOKしてやれば、その後、cmdからもcloneとかできるようになるっぽい。

■intellij IDEA上でのgit操作

上の設定ができてる前提で、
setting/VersionControl/Git/SSH executable:Buit-in
でいけた。