【SSH接続】The requested repository either does not exist or you do not have access. と表示されるときはアクセス権も確認しよう.エラーの解決方法を紹介

SSH接続 開発支援ツール

SSH接続でブランチをプッシュしようとしたところこのようなエラーが発生しました.

The requested repository either does not exist or you do not have access.
If you believe this repository exists and you have access,make sure you're authenticated.
fatal: Could not read from remote repository. 
Please make sure you have the correct access rights and the repository exists.

ちゃんと存在するリポジトリだったので不可解なエラーでした.

今回はSSH接続でブランチをプッシュするときに発生するエラーの解決方法について説明します.

背景

  • コード管理:Bitbucket
  • OS:Windows 11 バージョン 22H2
  • 接続方法:SSH

初めて使うリポジトリにブランチをプッシュしようとしたところ,このエラーに出会いました.

初めはSSH接続ができていないことを疑いました

gitでPlease make sure you have the correct access rights and the repository exists. が出た時の対処法 - Qiita
Git で以下のエラーが出た時にやったこと。Bad owner or permissions on ~/.ssh/configfatal: Could not read from remote …

結論
結論から書くと、sshの公開鍵,秘密鍵を再発行してgithubに登録して、configファイルにも記載して、エラーが解決したのでその方法を書きます。

gitでPlease make sure you have the correct access rights and the repository exists. が出た時の対処法

こちらの記事ではSSHを再発行する手順でエラーを解決できたと紹介してありました.
私も同じようにSSHを再発行しましたが一向にエラー解決には至りませんでした.

原因:リポジトリへの権限不足

The requested repository either does not exist or you do not have access.
If you believe this repository exists and you have access,make sure you're authenticated.
fatal: Could not read from remote repository. 
Please make sure you have the correct access rights and the repository exists.

リポジトリへの書き込み権限がないことが原因でした.
よく見るとyou do not have accessと書いてありましたね.

私も知らなかったのですがリポジトリごとにアクセス権を設定できるそうです.
アクセス権のうち読み取り権限しかない場合はクローンやファイルの閲覧はできてもブランチの作成やプッシュはできません.

管理ユーザーは、リポジトリ内ですべての作業 (リポジトリ設定の変更、ユーザー権限の更新、およびリポジトリの削除) を実行できます。
書き込みユーザーは、リポジトリに変更を直接プッシュできます。
読み取りユーザーは、リポジトリ コードの表示、クローン、フォークはできますが、変更をプッシュすることはできません。読み取りアクセス権が付与されている場合、ユーザーは、課題の作成、課題へのコメント、および Wiki ページの編集も行えます。
リポジトリへのアクセス権をユーザーとグループに付与する
リポジトリへのアクセス権をユーザーやグループに付与する | Bitbucket Cloud | アトラシアン サポート
管理者として、リポジトリでコードのレビューまたは共同作業を行う必要があるユーザーに、アクセス権 (管理、読み取り、または書き込み) を付与できます。

ブランチが作成できないことはブラウザからも確認できました.
作成ボタンがグレーがかり押せないようになってますね

クリックして拡大できます

このようなエラーが出ていると確実にアクセス権が足りていないので管理者に連絡して書き込み権限をもらいましょう.

権限を変更すると無事にブランチがプッシュできました.

$ git push origin branch name
Enter passphrase for key '/home/xxxx/.ssh/id_rsa': 
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 16 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 1.98 KiB | 1.98 MiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: 
remote: Create pull request for branch name:
remote:   repository name
remote: 
To bitbucket.org:repository name
 * [new branch]      branch name -> branch name

まとめ

今回はブランチをプッシュするときに発生したエラーの解決方法を紹介しました.
このようなエラーは基本的にSSH接続周りが怪しいと考えるのでアクセス権は盲点でした.

私の場合はタイミングも悪くてMacからWindowsに変えるときとリポジトリにプッシュしようとしたときが一緒だったので余計にSSH接続が問題だと思ってしまいました.

$ ssh -T git@bitbucket.org
authenticated via ssh key.
You can use git to connect to Bitbucket. Shell access is disabled

bitbucketであれば ssh -T git@bitbucket.org を実行して connect to Bitbucket と表示されていればSSH接続できているので別の原因を疑ってもいいかもしれませんね.

Windows でリポジトリ アクセス キーをセットアップする | Bitbucket Cloud | アトラシアン サポート
Microsoft Windows で SSH と Git CLI を介して Bitbucket Cloud アカウントに接続するためのリポジトリ アクセス キーを設定する方法