パスワードを聞かれずにGitHubに接続する設定方法


##概要

初めてGitHubにアカウントを作った人が、コマンドでリモートリポジトリにプッシュできることを確認するまでの手続きをメモします。

## 対象読者

- 複数のGitホスティングサービスを使いたい
- リモートリポジトリとのやりとりにパスワードを聞かれないようにしたい
- Gitの使い方はある程度わかる
- GitHubは初めて

## 想定環境

- Gitはインストール済み（まだの方は[こちら](https://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-Git%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)から）
- ローカルPCはMac

## 手順
### GitHub側で新規リポジトリ作成
右上のメニューから新規のリポジトリを作成する。
![“ここに好きな文言を設定” 2019-12-14 15.38.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/550851/f31e851f-39f2-10e2-c45e-f42091e17048.png)

Repository nameにリポジトリ名を記入し、Create Repositoryで新規作成
![“ここに好きな文言を設定” 2019-12-14 15.44.09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/550851/edcc29fc-eadf-4ee7-d85c-7b7bf99cb2b2.jpeg)

以下の画面に移るので、赤枠URLを覚えておく。
（特にSSHが選択されていることを確認。HTTPだと公開鍵登録したあとの通信がうまくいかない）
![“ここに好きな文言を設定” 2019-12-14 15.53.09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/550851/28f7121e-18b0-9fdb-70dc-757a96ee6934.jpeg)

### ローカルに鍵を生成

```
$ ssh-keygen -t rsa -f ~/.ssh/github -C "適当なコメント"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): (そのままEnterキーを押す)
Enter same passphrase again: (そのままEnterキーを押す)
```

【任意】秘密鍵の方をわかりやすくリネームしておく

```
$ mv ~/.ssh/github ~/.ssh/github.pem
```

秘密鍵のパーミッション変更

```
$ chmod 600 ~/.ssh/github.pem
```

### Gitの接続設定
接続情報を追記する。


- ここの設定で各Gitホスティングサービスの鍵情報を個別に設定することによって、プッシュ時に自動で接続情報を切り替えてくれるようになる。
- Hostは任意でいいかと思って適当なものを入れていたが、接続に失敗した。注意。


```
$ vim ~/.ssh/config

Host github.com (※絶対これ)
	HostName github.com (※絶対これ)
	IdentityFile ~/.ssh/github.pem
	TCPKeepAlive yes
	IdentitiesOnly yes
	User git (※絶対これ)
	Port 22
```

### GitHubに公開鍵を登録する
ローカルの公開鍵を確認＋クリップボードへコピー
（catコマンドででてきた長い文章を頭から全てコピーしておく。ターミナルでは折り返しで表現されているかもしれないが、実物は長いひとつながりの一文のデータ。コピー時に改行コードが混ざるとうまく繋がらないので注意。）

```
$ cat ~/.ssh/github.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB...... 
```

GitHubに戻って、右上メニューからSettingsを選択
![“ここに好きな文言を設定” 2019-12-14 16.11.24.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/550851/1db508a5-5cc6-69db-48d3-7e392d0d40e4.jpeg)

左メニューより「SSH and GPG keys」を選択し、右上緑色の「New SSH Key」を選択。
![“ここに好きな文言を設定” 2019-12-14 16.17.20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/550851/c7297e28-2566-347e-e3de-81c74d2ef9b1.jpeg)



### 接続確認する。

ローカルにリポジトリを作成

```
$ mkdir ~/githubtest
$ mkdir ~/githubtest/gittest/
$ cd ~/githubtest/gittest/
$ echo "Hello Git" >> test.md
$ git init
```

コミットし、リモートへ接続。

```
$ git add test.md
$ git commit -m "initial commit"
$ git remote add origin git@github.com:mu-editech/GitHubTestRepo.git
$ git push -u origin master
```

GitHubへ戻って、以下のような画面がでれば接続成功。

<img width="1076" alt="“ここに好きな文言を設定” 2019-12-14 17.33.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/550851/07ce8a38-a0a0-28af-ed28-eef26028fefe.png">


おしまい。

## 参考文献

- 【Qiita】[【GitHub超初心者入門】この前初めてGitHubを使い始めたエンジニア見習いが書くGitHubの使い方と実践～とりあえず一緒に動かしてみようぜ！～](https://qiita.com/nnahito/items/565f8755e70c51532459)
- 【Qiita】[gitとsshのconfigについて(備忘録)](https://qiita.com/yoshidev523/items/b5e5923b2f658f09e0a6)
- [GitHub (または Bitbucket) への接続アカウントを切り替える](https://blog.clock-up.jp/entry/2015/02/20/git-ssh-account-switch)

