これまではMac、Linuxな環境で試してました。いよいよ例のWindows方面で試す時期になっちゃったワケです。で、案の定ハマりました。一日丸つぶれ。
自分はWindowsと相性悪いな。仲良くしようと思わないから個人的にどうでもいいんだけど、世の中、Windowsで開発する人たちが数多くいるから通らずにはいられない。
Windowsのgit実装はTortoiseGitとかmsysGitがあるようです。コンテキストメニューに組み込め、マウスでぽちぽち出来るっていうことでTortoiseGitが便利なようですな。(TortoiseGitはmsysGitを内部で使う仕組みらしいので、gitの実装はmsysGitになるのかな?)
ではWindowsクライアントからgitolite経由でgitリモートリポジトリへアクセスさせてみます。まず、アカウントを作成してもらうため、公開鍵を作ってもらいます。
公開鍵はTortoiseGitに入っているPuttygenを使う方法とmsysGitのGit Bashでssh-keygenコマンドを実行する方法があります(他にもあるけど)。前者はGUIクライアントなのでマウスでぽちぽちしたがるWindowsユーザにとってはラクなようですね。"Save public key"、"Save private key"で公開鍵、秘密鍵をそれぞれPCに保存してもらって公開鍵のほうをごにょごにょして送ってもらいました。
送ってもらった公開鍵(windows.pubとします)をgitolite-adminでaddしてpushしてみたら、
2013-02-19.XX:XX:XX XXXXX die fingerprinting failed for 'keydir/windows.pub'
サーバのログにこんなエラーが…。
最初は公開鍵の作成ミスかと思って、作りなおしてもらったりしてみたけど同様のエラー。
なぜだかよくわからないままふとファイルを表示させてみたら、
---- BEGIN SSH2 PUBLIC KEY ---- Comment: "rsa-key-20130218" AAAAB3NzaC1yc2E(あと適当).............. .................. .................. ---- END SSH2 PUBLIC KEY ----
こんなフォーマットになってた。他のアカウントの公開鍵と比べると"---- BEGIN"、"Comment"、"---- END"の行が異なってます。
もしかしてgitoliteはPuttygenが吐き出した公開鍵のフォーマットに対応していないのかも?
ということで、msysGitのGit Bashのssh-keygenで作りなおしてもらった公開鍵をadd、pushしたらエラーがなくなり、Windowsクライアントからアクセスできるようになった。
良かった良かった。
ここまで書いて、サーバ側のsshの設定でうまく出来るんじゃないかな?と思った。