目的
Windows PCのgitのSSHの設定につまづいてしまったので、その時に調査した内容と対応方法をまとめます。
現象
GitHubの公式ドキュメントをもとにSSHの設定を行いましたが、自分のプライベートリポジトリをクローンしようとすると認証エラーとなってしまいました。
>git clone <repository path>
Cloning into '<repository name>'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
しかし、SSHでGitHubに接続はできています。
>ssh -T git@github.com
Hi rkobayashi! You've successfully authenticated, but GitHub does not provide shell access.
環境
- Microsoft Windows [Version 10.0.22631.3737]
- git version 2.45.2.windows.1
原因
gitが使用しているSSHクライアントがシステムとは異なるものを使用しているため、鍵の設定が共有されていないことが原因でした。
こちらの記事を読んで気づきました。
対策
gitで使用するSSHクライアントをシステムのものに変更します。
git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
調査方法
以下、調査した時に使用したコマンドを紹介します。
sshにv
オプションを追加することでデバッグ情報が出力されます。
下のコマンドでssh
ではOpenSSH_for_Windows_8.6p1
が使用されていることがわかります。
>ssh -vT git@github.com
OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
...
debug1: Exit status 1
環境変数GIT_SSH_COMMAND
を設定することでgitのsshにデバッグオプションを追加することができます。
powershellでの実行例
> $env:GIT_SSH_COMMAND="ssh -v"
> git clone <repository path>
Cloning into '<repository name>'...
OpenSSH_9.7p1, OpenSSL 3.2.1 30 Jan 2024
...
debug1: No more authentication methods to try.
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
まとめ
WindowsのgitでSSH認証エラーについて、異なるSSHクライアントが原因で問題になることがわかりました。
以上、最後までお読みいただきありがとうございました。