Gitのssh鍵に名前をつけたらハマった件について

# なんでハマったのか
まず、この話の発端ですが、プログラミングスクールのカリキュラムに沿って作った公開鍵、秘密鍵の名前がデフォルトのid_rsaで、githubの登録名がpracticeとかなんとか。

すごくこだわりの強い性格が災いして
・秘密鍵・公開鍵にちゃんと名前をつけてあげたい！
・github上の登録名もしっかりしたい
と思い立って、作り直し、名前を変えたところエラー頻発。

かなりチームメンバーに迷惑をかけてしまいました…:frowning2:
同じようなこだわりの強い性格の人の助けになれたらと思い、メモしておきます。

# 要約
１．鍵に名前をつけるときは

```
Enter file in which to save the key (/Users/you/.ssh/id_rsa):
/Users/自分のPCのユーザ名/.ssh/つけたい名前
```

と絶対パスでつけてあげる

２．gitの仕様上、リモートリポジトリに接続するとき、デフォルトの
 id_rsaを探しに行ってしまうので、ssh鍵と同じフォルダに

```text:config
Host github.com
  HostName github.com
  User git
  Port 22
  IdentityFile ~/.ssh/github_rsa
  TCPKeepAlive yes
  IdentitiesOnly yes
```

っていうファイルを作って、今回はリモートがgithubの場合ですが、
ここに接続するための鍵があるよ！って教えてあげないといけない

３．windowsかつPowershellの人はさらに

```
chmod 0600 つけた名前
```
でパーミッション許可してあげる。
と、いう感じです。

ここからの流れは長いので、
読みたい人は見てね :woman_tone1:

# 前提条件
・現在スクールでvagrant,VirtualBox,Ruby on Railsを用いて開発中
・vagrantの起動、railsサーバーの起動、gitコマンド等はすべて
　Powershellを用いて行っている


## ◎ハマリポイント１
Powershellに下を打ち込んでディレクトリの移動。

```
cd ~/.ssh
```

ここに作る意味は、gitがssh鍵を探しに行くデフォルトのフォルダがここだから。
ちなみに、vagrant内での.sshフォルダはvagrant upコマンドを打ち込んだときにターミナル or Powershellに表示される

```
default: /home/vagrant/work => ほにゃらら
```

ほにゃららの部分のディレクトリ下にできますよん

んで、

```
ssh-keygen -t rsa -b 4096 -C "githubに登録しているメールアドレス"
```

-t rsa　＝　rsaというタイプの鍵にしますよ～
-b 4096 ＝ 4096bitの長の鍵にしますよ～（デフォルトは2048bit。長いとセキュリティ向上するよ）
-C "" ＝ 公開鍵の内容のしっぽにコメントが付くんだけど、その内容を""の中身にするよ～（メールアドレスにするのがスタンダードなんやて。）
という意味。

その後

```
Enter file in which to save the key (/Users/you/.ssh/id_rsa):github_rsa
```

で名前をつけたのですがこれが間違い、、、
英語読解力がなさすぎるんですが、in which to save（どこに保存する？）的な意味なので、

```
Enter file in which to save the key (/Users/you/.ssh/id_rsa):
 /Users/自分のPCのユーザ名/.ssh/github_rsa
```

と打ち込まなくてはならなかったんですよね、、、
これは私が単純に説明書読まないタイプの子なのが悪いです :joy:

## ◎ハマリポイント２
それでも消えないエラー。

```
Permission denied (publickey).
```

ここで私は思ったのですが、id_rsa（デフォルトの名前）のときはうまくいってたんだよな～、ということは名前をつけたことでエラーを吐いてるのか。（そりゃそう）

調べてみたら要約の通りで、gitの仕様上デフォルトの名前のid_rsaを探しに行くので、ない！作ってないやんけ！て言われる。

なので、.ssh下にconfigというファイル名で以下を記述

```text:config
Host github.com
  HostName github.com
  User git
  Port 22
  IdentityFile ~/.ssh/github_rsa
  TCPKeepAlive yes
  IdentitiesOnly yes
```

これでgithub_rsaを探しに行くようになってくれます。

## ◎ハマりポイント３
まだ消えないエラー。さすがにメンタルが弱る。今度は内容が違う。

```
Bad owner or permissions on C:/Users/*****/.ssh/config
```

これはwindowsユーザーかつPowershellを使ってる人だけに起こるみたいで、秘密鍵とconfigファイルを一緒のディレクトリに入れてるとこのエラー吐くとか。
（詳しくは引用見て欲しい）

秘密鍵を.sshと違うディレクトリに移動すれば解決らしいけど、
configの中身書き直すのめんどくさいし、


```
chmod 0600 github_rsa
```

で権限を与えました。

以上！長かったね、きれいにまとまってなくてごめんなさい。
エンジニアとしてまだ仕事してるわけじゃないので、間違っているところがあったら編集リクエスト？なりコメントなりお願いいたします :innocent:

> 参考にした記事
お前らのSSH Keysの作り方は間違っている
https://qiita.com/suthio/items/2760e4cff0e185fe2db9

> GitHubユーザーのSSH鍵6万個を調べてみた
https://hnw.hatenablog.com/entries/2014/07/05

>Win10のSSHでBad owner or permissions
https://qiita.com/ryota23/items/8d2745c3b275e8ec7ea8

>秘密鍵を使った SSH 接続時に WARNING: UNPROTECTED PRIVATE KEY FILE! と表示されて接続できない
https://support.amimoto-ami.com/en/articles/934049-%E7%A7%98%E5%AF%86%E9%8D%B5%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F-ssh-%E6%8E%A5%E7%B6%9A%E6%99%82%E3%81%AB-warning-unprotected-private-key-file-%E3%81%A8%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%A6%E6%8E%A5%E7%B6%9A%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84