gitへpush時のerror:Please make sure you have the correct access rights and the repository exists.をsshkeyで解決する

#結論
多くの記事にある通り、`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で確認・変更](https://note.nkmk.me/git-config-setting/))

###--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の作り方は間違っている](https://qiita.com/suthio/items/2760e4cff0e185fe2db9))

途中で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接続をするまでの環境構築手順](https://qiita.com/unsoluble_sugar/items/14bea376d8e6fce82eb3)）

#github へ sshkeyの登録と接続確認

公式サイトのものが一番分かりやすいです。注意としては、`sshkey`のコピーには
`$ pbcopy < ~/.ssh/id_ars.pub`を使いましょう！ということです。

いくつかの記事で、ディレクトリの中身を確認して、メールアドレスなどを省いてコピーするというのを見かけましたが、公式がやっている方法を使ったほうが確実ですね。
（参考：[GitHub アカウントへの新しい SSH キーの追加](https://docs.github.com/ja/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account)）

###無事接続できたかどうかの確認

さて、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 キーの追加](https://docs.github.com/ja/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account)
・[新しいMacでGitHubのSSH接続をするまでの環境構築手順](https://qiita.com/unsoluble_sugar/items/14bea376d8e6fce82eb3)
・[GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~](https://qiita.com/shizuma/items/2b2f873a0034839e47ce)
・[お前らのSSH Keysの作り方は間違っている](https://qiita.com/suthio/items/2760e4cff0e185fe2db9)
・[gitでPlease make sure you have the correct access rights and the repository exists. が出た時の対処法](https://qiita.com/GakuNaitou/items/81dbbd3ea6211af71648)
・[Gitの設定をgit configで確認・変更](https://note.nkmk.me/git-config-setting/)