結論
多くの記事にある通り、sshkeyを再度作成しgitに登録することで解決しました。
ただ、以下に当てはまる方々は参考になると思います。
対象読者
・初心者の方
・gitを複数アカウント使用している方
・何度も同じerrorが出る方
・~/.ssh/configの書き方に自信の無い方
・local --globalのuser.nameやuser.emailを変更した方
・個人用gitを持っていたが、新しく社内用gitをメインに使うという方
・まとめて、いろいろな記事を参照したい方
sshkeyを再度作成し登録を行い一度は解決しました。しかし、何度も同じエラー文が出てくるため、おかしいと思い調べた結果を備忘録として記します。
エラーの確認
作成したアプリケーションをgithubへadd,commit は完了。
いつもどおり、git push origin mainと打ち込んだところ、以下のようなエラー文が出てきました。
Error文について
sample_app % git push origin main
ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
英語は一読して、わからなければGoogle翻訳に入れてみましょう。
エラー:リポジトリが見つかりません。
致命的:リモートリポジトリから読み取ることができませんでした。
正しいアクセス権があることを確認してください
リポジトリが存在します。
アクセス権限とリポジトリが存在しているのか確認してくださいが正しい訳です。
以前にも同じエラーにあいましたが、他の方の記事を参考にsshkeyを再度作成し解決できました。ただ、今回は何度やっても改善されなかったため、根本からの見直しを行いました。
原因は何だったのか
考えられる原因は、複数あります。
・localのglobalのuser.nameとuser.emailを個人用から会社用に変更した
・名前を変え、sshkeyを複数作ってしまった
・ユーザは会社用に変更したが、ssh接続をする際のユーザが前の個人用のままであった
・~/.ssh/config内の設定が正しくできていなかった
個人的に学習用でgithubを使用していたため、githubのアカウントをすでに持っていました。エンジニアとしての転職により、今後は個人での開発をメインで使わなくなるためglobalのユーザアカウントを個人用から会社用に変更しました。その際に ~/.ssh/configの設定の間違いをしてしまったようです。それに気づかずに、何度も同じエラーにあう度に作ってしまった、sshkeyの数々が原因となっていたと考えられます。
解決方法
今回解決できたのは、2点の変更が重要でした。
・sshkeyをデフォルト名のまま再作成したこと
・~/.ssh/configの再設定
設定した globalユーザの確認をします
gitにはsystem, global, localの3つの設定ファイルがあります。個人用で使用していたは globalの設定で、該当ユーザの全リポジトリを扱うタイプです。 現在の設定を見るためには、$ git config --global -lで確認できます。
(git initをしたディレクトリ以下、もしくは作業ディレクトリ上で確認してください。)
(参照:Gitの設定をgit configで確認・変更)
--globalでの設定
githubに登録した名前とメールアドレスを設定しましょう。
私は、個人用から会社用に変更をしました。
$ git config --global user.email xxxxx@yyyy.co.jp
$ git config --global user.name yamadataro
$ git config --global -lで上記で設定したユーザ名、メールアドレスになっていればOKです。
ssh-keyを作成する前に
sshkeyの作成を再作成します。一度作っているかどうかを確認してください。デフォルト設定ではgithubは~/.ssh/id_rsa、~/.ssh/id_rsa.pubから読み込みます。今回うまく行ったのは、こちらを再作成したことが大きいです。念の為、作成済みの方は削除してから作りました!( 後でsshkeyを作成する際に上書きもできますが、今回は削除してから作成しました。 )
// sshkeyのあるディレクトリに移動
$ cd ~/.ssh
//sshkeyを作る際に同時に作成される2つの id_rsa を確認。なければ新規作成からでOK
$ ls
//各ディレクトリを削除
$ rm id_rsa
$ rm id_rsa.pub
これでsshkeyを作成する準備ができました。
使っていないkeyについても、この際整理しても良いと思います。
ssh-keyの作成はここから
$ cd ~/.sshで鍵を作成するディレクトリに移動し、以下のコマンドを入力します。
// mac Big Surの場合
$ ssh-keygen -t rsa -b 4096 -C xxxxx@yyyy.co.jp
もし任意のsshkey名をつけたい場合は -f github_mainなどをメールアドレス以下につけることが可能ですが、今回はその方法ではなくrsaで再作成するため空欄にしています。
また、多くの参考記事に{},""でメールアドレスなどを囲った分がありますが、そちらの書き方は少し注意が必要です。使っているOSに依存したり、囲うことで範囲指定して事故を防ぐメリットがあるようです。必要に応じて対応をお願いします。私と同じOS:mac Big Surの方は特になくても構いません。
-c以下にはgithubに登録済みの社用メールアドレスを入れました。細かい用語や数値については他の記事を参考にしてください。(参考:お前らのSSH Keysの作り方は間違っている)
途中で3回確認をとられますが、特に設定のない場合は、そのままEnterを3回押してください!中身はざっと解説しておきます。
Generating public/private rsa key pair.
//作成されるディレクトリとファイル名の確認
Enter file in which to save the key (/Users/username/.ssh/id_rsa):
//パスワードより長いパスフレーズを登録するかの確認
Enter passphrase (empty for no passphrase):
//上で入力したパスフレーズを再確認
Enter same passphrase again:
では、作成されたssh-keyを$ lsで確認しましょう。
その際に、id_rsa, id_rsa_pubが存在していればOKです。
./ssh/configで設定を変更する
sshkeyを作成した後、githubとssh接続をする設定ファイルがこちらです。同名のファイルがない場合は$ touch configで作成しましょう。$ vi ~/.ssh/configで編集できます。私の場合は以下のように設定しています。
# GitHub SSH key
Host github
Host Name github.com
IdentityFile ~/.ssh/id_rsa.pub
User git
Host *
UseKeychain yes
AddKeysToAgent yes
確認するのはIdentityFileが先程作成したディレクトリ名~/.ssh/id_rsa.pubになっているかどうかです。gitとやり取りをするのは.pubの方なので注意!
もともと複数アカウントを設定するため、新しく作成したsshkeyのパス名を設定していました。しかし、どうもうまく実行できなかったため、再作成した~/.ssh/id_rsa.pubに変更しました。(参考はこちら:新しいMacでGitHubのSSH接続をするまでの環境構築手順)
github へ sshkeyの登録と接続確認
公式サイトのものが一番分かりやすいです。注意としては、sshkeyのコピーには
$ pbcopy < ~/.ssh/id_ars.pubを使いましょう!ということです。
いくつかの記事で、ディレクトリの中身を確認して、メールアドレスなどを省いてコピーするというのを見かけましたが、公式がやっている方法を使ったほうが確実ですね。
(参考:GitHub アカウントへの新しい SSH キーの追加)
無事接続できたかどうかの確認
さて、githubへsshkeyが登録できたかを確認するために、作業していたディレクトリに戻ります。小ネタですが、直前まで作業していたディレクトリへは$ cd -のコマンドで移動できます。
sample_app % ssh -T git@github.com
Hi user.name! You've successfully authenticated, but GitHub does not provide shell access.
上記のように新しく登録したuser.nameが表記されていたら無事完了です!!
--globalにはかなり前に会社用アカウントを設定していましたが、依然として個人のユーザ名が表示されていました。しかし、今回確認したところ、会社用のユーザ名に変更されていたため、~/.ssh/configで起きていたエラーは解決され、無事push出来ました!
まとめ
今回は、error:Please make sure you have the correct access rights and the repository exists.についてsshkeyを再度設定し、設定ファイルである~/.ssh/configの中身も整理しました。何度か違うリポジトリにpushしてみて、経過観察し問題ないことを確認したいと思います。
以上
参考記事
・GitHub アカウントへの新しい SSH キーの追加
・新しいMacでGitHubのSSH接続をするまでの環境構築手順
・GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~
・お前らのSSH Keysの作り方は間違っている
・gitでPlease make sure you have the correct access rights and the repository exists. が出た時の対処法
・Gitの設定をgit configで確認・変更