症状
- フェッチ等の画面で、
Putty 鍵の自動ロードがグレーアウトしている。 - 以下のようなエラーが出る
git.exe fetch -v --progress "****"
****: Permission denied (publickey,keyboard-interactive).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
gitは正常に終了しませんでした (終了コード 128)
設定は、
ToitoiseGit -> 設定 -> ネットワーク -> SSHクライアントに、Git のssh.exeを指定。
ToitoiseGit -> 設定 -> リモート -> Putty 鍵に、秘密鍵から生成した PUTTY鍵 を指定。
解決方法
-
ToitoiseGit -> 設定 -> ネットワーク -> SSHクライアントに、ToitoiseGitのTortoiseGitPlink.exeを使う。
そうすると、Putty 鍵の自動ロードのチェックが付けられるようになる。チェックを付けることで、上記のリモート -> Putty 鍵の設定が有効になり、アクセスする時にこの値を読み取り、画面右下のシステムトレイの Pagent に key を自動登録してくれる、という仕組みらしい。
(画面右下のPagentは、TortoiseGitPlink.exeの一部であるもよう。)
他の解決方法としては、以下も考えられる。
- Git の ssh.exe を使う場合は、ユーザフォルダの
.sshに適切な名前の秘密鍵を置いてやる - 自動ロードを使わない場合は、TortoiseGitPlink.exe にした上で、画面右下の Pagent に手動で
Add Keyしてやる
ちなみに、ユーザー情報は編集不要。編集してもリモート側からはその鍵のユーザとして扱われる。
ハマった発端
逆に、新規に作成した Git リポジトリから、何も設定していないのに認証が通って、プライベート設定しているリモート側から clone やら fetch やらできてしまって、焦って色々やったら今度は全く繋がらなくなったという話。(同じPCで最初の環境構築をやったので、その設定が Pagent に残っていて、暗黙にそのキーで接続にいって、成功していたというオチ)