Git for Windows で公開鍵必須になった?

今日新しい PC で Android Studio をセットアップしリモートの Git リポジトリに SSH 接続で git clone しようとしたら以下のエラーが表示された:

Could not read from remote repository.

これだけでは何だか分からない。 Android Studio 的には PATH に通っている git コマンドを発行しているだけなので Git for Windows 側が同様に失敗しているわけだ。 Windows PowerShell 上で同様に git clone してもエラーが表示されるが、今度はもう少し具体的なエラーが出た。

Permission denied (publickey)

これは何なのだろうか、ということで検索してみたら、どうも公開鍵が無いので接続できないということらしい。

公開鍵を生成しサーバに送信

Windows のユーザホームディレクトリは /Users/(ユーザ名) であり、その下の .ssh フォルダに移動する。 そこで公開鍵を生成する:

ssh-keygen -t rsa

出てくる質問は全部そのまま Enter でよい。 秘密鍵 (id_rsa) と公開鍵 (id_rsa.pub) が生成されるので、公開鍵の方を SSH 接続したいサーバに転送する:

scp id_rsa.pub (サーバ URL):~

最後にサーバ側 .ssh/authorized_keys に追記する形で公開鍵の登録完了する:

ssh (サーバ URL)
cat id_rsa.pub >> .ssh/authorized_keys

試しに ssh コマンドで接続し、パスワード認証無しで接続できることを確認する。