リモートサーバーでGitリポジトリをcloneして使用している際に、特定のリポジトリでのみgit pull コマンドが失敗するという問題に直面。
SSHの公開鍵などの設定をGitHubなどで設定していない方は、他の方の記事を読んでください。
概要
リモートサーバーにVSCodeでSSH接続をし、プルを実行すると、以下のエラーメッセージが表示される。
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
原因の特定
SSHキーの設定
SSHキーは正しく生成され、ssh-agent に追加されていることを確認済。
ターミナルでSSH接続のテストを実行し、問題なく接続できることも確認済。
$ ssh -T git@github.com
Enter passphrase for key '/home/xxx/.ssh/id_rsa':
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
GitのリモートURLの確認
リモートリポジトリのURLを、VSCodeでプルできるプロジェクトと比較してみる
// Permission denied と出るプロジェクト
$ git config --list
remote.origin.url=git@github.com:xxx/xxxx.git
// プル・プッシュができるプロジェクト
remote.origin.url=https://github.com/xxx/xxxx.git
解決策
そんな訳無いだろうと思いながら、リモートリポジトリのURLをSSHプロトコルからHTTPSプロトコルに変更。
git remote set-url origin https://github.com/xxx/xxxx.git
→ エラーなくプル・プッシュが可能。
特定のGitリポジトリでの git pull
エラーは、SSHプロトコルからHTTPSプロトコルに変更することで解決しました。同様の問題に直面している方は、上記の手順を試してみてください。