git push エラー：git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. 

# 概要
`git hub`に`push`しようとした際、下記のエラーによって`push`できなかったので、その解決方法を備忘録も含めて残しておきます。

```sh
# 入力コマンド
git push -u origin main

#　エラー文
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
```
# 修正方法
## 1. 接続確認
下記のコマンドをターミナルに入力して、git hubにアクセスるできるか確認する
(何らかののエラーが表示されるはずです)
```sh
ssh -T git@github.com

# エラー文
git@github.com: Permission denied (publickey).
# または下記のエラーが表示される
Warning: Permanently added the RSA host key for IP address 'あなたのIPアドレス' to the list of known hosts.
git@github.com: Permission denied (publickey).
```

## 2. 秘密鍵（id_rsa）と公開鍵（id_rsa.pub)の確認
下記のコマンドを入力して、`id_rsa`と`id_rsa.pub`があるか確認する
```sh
ls ~/.ssh 

# 下記の二つが生成されていた場合は、新しくid_rsa、id_rsa.pubを作る必要はない
id_rsa  id_rsa.pub
```
もし、`id_rsa`と`id_rsa.pub`がない場合は、下記のコマンドを入力して作成する
```sh
ssh-keygen -t rsa

# コマンド入力後は、Enterを連打して完了する
```
もっと堅実な方法で作成したい場合は、下記のサイトを参考にして下さい
[ターミナルで鍵を作成する](https://zenn.dev/toaster/articles/83ec535b3a8974#1.-%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E3%81%A7%E9%8D%B5%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)

## 3. 公開鍵（id_rsa.pub)の情報を確認する
下記のコマンドを入力すると公開鍵の情報が表示される為、その情報をコピーしておく
```sh 
cat ~/.ssh/id_rsa.pub
```
## 4. 公開鍵（id_rsa.pub）をgithubに登録する
githubを開く
自分のアイコンをクリックして、`Settings`を押下する
サイドメニューバーに、`SSH and GPG kes`が表示されている為、その表示を押下する
![githubサイドバー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/664659/aaab5230-200c-47ba-d676-3757b581c58f.png)

`SSH and GPG kes`を押下すると`new SSH key`が表示されているので、そのボタンを押下する
![New SSH keyの画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/664659/f6435672-9ac9-3808-0d50-849e273429c3.png)

**Title**、**Key　type**、 **Key**を入力する
![SSH keys : Add new.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/664659/6aceb845-cb9d-cf73-b050-25cee731bb54.png)

- **Title**
任意でタイトルを入力。公開鍵の使用用途を記載するのが最良の選択
- **Key type**
`authentication key` の状態で良い
- **Key**
公開鍵（id_rsa.pub）の情報を貼り付ける <font color="Red">(改行や空白に注意)</font>
下記の方法でも、公開鍵（id_rsa.pub）の設定は可能
```sh
pbcopy < ~/.ssh/id_rsa.pub
```

:::note warn
**Key type**の`signing key`の補足
`signing key`は、S/MIMEを用いて公開鍵に署名を付与する事が可能。署名を付与する事で、本人の妥当性を証明できる。設定方法に関しては、下記を参照

- [GitHub アカウントへの新しい SSH キーの追加](https://docs.github.com/ja/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account#adding-a-new-ssh-key-to-your-account)
- [コミット署名の検証について](https://docs.github.com/ja/authentication/managing-commit-signature-verification/about-commit-signature-verification)
:::


## 5. githubにsshで接続できるか最終確認
```sh
ssh -T git@github.com
# パスワードの入力を促された場合は、PCに登録しているパスワードを入力する
Enter passphrase for key '/Users/ユーザー名/.ssh/id_rsa': 
```
正常に接続できれば、下記のコメントが表示される

```sh
Hi あなたの名前! You've successfully authenticated, but GitHub does not provide shell access.
```

## 6. git push　コマンド
ターミナルからgithubにログインが行えていれば、正常に`git push`コマンドが動作する

```sh
git push -u origin main                

# 正常にpushした時のコメントが表示される
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
# 以下省略
```

# 参考資料
- [（初心者向け）GitHubアカウントにターミナルでログイン（SSH接続）する](https://dev.classmethod.jp/articles/github-mac-terminal-ssh-login/)
- [ターミナルでGithubにSSH接続する](https://zenn.dev/toaster/articles/83ec535b3a8974)
- [GitのSSH鍵認証で毎回パスワードを要求される](https://qiita.com/shinki_uei/items/70f8f9ae50f1b9e24dce)
- [Gitのエラー：Permission denied (publickey). を解決した備忘録](https://qiita.com/takapon21/items/13f00cb2e48d8c1cc115)
- [秘密鍵（id_rsa）と公開鍵（id_rsa.pub）を作成して、ssh認証の初期設定をする方法](https://freeheroblog.com/id_rsa/)