SSHキーでGithubに接続する。（初めてのgithub完全ガイド2）

#前回からの続き、ローカルファイルをGithubにpush  
[前回](https://qiita.com/monsoonTropicalBird/items/b526a148da5f1a7f523b)はGitが何であるかの説明から、インストール、Gitコマンドの使い方などを書いたんじゃが、それをGithub上にアップする手順じゃ。 
まず、今までの古いパスワード方式ではなく、SSHという方式で自分のパソコンとサーバーを接続するんじゃ。 
この方式は、公開キーと秘密キーというふたつの鍵ペアを発行し、公開キーを外部のサーバーなどに置いておき、自分の内部の秘密キーと合わさった時に繋がるんじゃ。 
公開キーが鍵、秘密キーが鍵穴みたいな感じで、２つがピッタリと合うと繋がるというイメージで、**少しエロいの**。 
公開キーは鍵が複製できて、基本鍵穴は一つだけじゃ。 

###SSHキーを発行する
SSHキーの発行は、コマンドラインから 

```
ssh-keygen -t rsa -b 4096 -C "youremailadd@namahage.com"  // -t:type -b:byte -C:comment ラベル代わりに使ってる
```
で、幾つかの質問にそのままエンターを入れ続けると、下記のような表示が現れ、キーが生成された事がわかる。

```
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/sammy/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sammy/.ssh/id_ed25519
Your public key has been saved in /home/sammy/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:EGx5HEXz7EqKigIxHHWKpCZItSj1Dy9Dqc5cYae+1zc youremailadd@namahage.com
The key's randomart image is:
+--[ED25519 256]--+
| o+o o.o.++      |
|=oo.+.+.o  +     |
|*+.oB.o.    o    |
|*. + B .   .     |
| o. = o S . .    |
|.+ o o . o .     |
|. + . ... .      |
|.  . o. . E      |
| .. o.   . .     |
+----[SHA256]-----+
```

で、次にこのキーペアを自分のパソコンに登録する。 下記コードを打つと、SSHエージェントが立ち上がる。

```
eval "$(ssh-agent -s)"
Agent pid 20906
```

で、秘密キーを自分のOSに登録

```
ssh-add -K ~/.ssh/id_ras
```
で、*Identify added*と出ると、あなたの秘密キーがパソコンに登録された事になる。

次にgithubのページに行こう。 
![github](https://images4.programmersought.com/934/8a/8a50bfd894a668c9831b4ea8b902ddee.png) 
アカウントのない人は、無料なので、作ると良いよ。 
アカウントにログインできたら、次にリモートrepositryを作る。メニュー右上の+マーク、createから。 
Repositry nameは適当に、自分のサイトやアプリに沿った名前をつけよう。publicで、下のファイルは両方noneでオーケー。 
![github create repositry](https://pantheon.io/docs/static/2c05c1c5bf8b1d1660dee9c1cf4bc8bc/e548f/create-git-repo.png)

そうすると、下記のような画面が出る。 
![github new repositry](https://www.bluej.org/tutorial/git/GitHub-afterCreatedRepository.png) 

今回はすでにあるローカルリポジトリからデータを持ってくるので、真ん中のやつ。 

```
git remote add origin https://github.com/yourgitaddress/your_project_name.git
git branch -M main
```

このコマンドをコマンドラインに入力する。この意味は、リモートリポジトリのアドレスを登録。電話帳みたいなもの。 

次にさっき作った公開キーの登録。右上メニュープロフイメージ横の▼からsettings -> この画面に。 
![Github SSH](https://inchoo.net/wp-content/uploads/2011/01/github-ssh-760x627.png) 
タイトルは適当な好きな名前で。 
で、公開キーの取得。 コマンドラインに戻り、下記コマンドをうつ。 

```
cat ~/.ssh/id_rsa.pub
```
そうすると、ssh-rsaから始める長い文字列が出てくるので、それをコピー！ githubにペースト！
![github rsa key](https://jdblischak.github.io/2014-09-18-chicago/novice/git/img/github-add-ssh-key.png) 
これでgithubにあなたの公開キーが登録されました。で、ようやくパソコンから繋がる状態に。 
繋がるかテストしてみよう。 

```
ssh -T git@github.com
```

```
Hi Namahage! You've successfully authenticated, but GitHub does not provide shell access.
```

繋がったよ、お母さん！

いよいよ、最初のpush 

```
/myProject/$ git push -u origin main
```

```
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 5.68 KiB | 727.00 KiB/s, done.
Total 7 (delta 0), reused 0 (delta 0)
To https://github.com/namahage/yourProject.git
 * [new branch]      main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
```

githubにデータが無事にアップ。githubサイトにログインして、さっき作ったレポジトリを見てみよう。 
pushされたデータが入ってるはず。 
次回からは git push だけでオーケー。

下記はリファレンス。

###キーの保存場所
下記コマンドを入れると、

```
ls -a -l ~/.ssh
```

SSHキーの場所が表示される

```
drwx------  2 ubuntu 4096 Jun 14 23:31 .
drwxr-xr-x 29 ubuntu 4096 Jun 21 16:37 ..
-rw-------  1 ubuntu 3401 Jun 14 22:38 id_rsa      //秘密キー
-rw-r--r--  1 ubuntu  757 Jun 14 22:38 id_rsa.pub　//公開キー
```

バイト帰りでばぁーっと書いて疲れたわい。 
儂は寝るのじゃ。