[Git][GitHub][Linux/Windows] 初回SSH設定の簡略化(wget,curl + bashで自動設定)

毎度毎度のVM環境作成後のGitHubのSSH設定を楽にしたかったので、`curl` か `wget` 経由でスクリプトダウンロードして実行すると自動設定できるようにしました。スクリプトの実行 + GitHubへの公開鍵登録で完了です。

[koara-local/setup_github](https://github.com/koara-local/setup_github)

`Git for Windows` の `Git Bash` 上でなら、Windowsでも動作します（wgetは含まれていないため、curl版のみ動作）。
（Macは未確認ですが・・・、たぶん動くはず・・・。）

あと作成する公開鍵の名前判別以外はGitHubへの依存はないので、多少修正すればGitLab等にも使いまわせるかと思います。

# 注意
下記の例はGitHub上のファイルをダウンロード&直接実行しており、内容は私の都合で変更が入る可能性があります。
もし使用する場合はスクリプト内容を確認の上、コピーやforkするなどしてスクリプトの内容が変わらない状態にした上で、自己責任でご使用ください。

# スクリプト内容
[setup_github/setup_github.sh at master · koara-local/setup_github](https://github.com/koara-local/setup_github/blob/master/setup_github.sh)

```bash:setup_github.sh
#!/bin/bash -e

if [ ! -e ~/.ssh/id_rsa_github ]; then
    ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa_github
else
    echo "\"~/.ssh/id_rsa_github\" already exists."
    echo "If you want to overwrite those files, delete them manually."
    echo "\"rm ~/.ssh/id_rsa_github ~/.ssh/id_rsa_github.pub\""
    echo ""
fi

if [ ! -e ~/.ssh/config ] || [ $(cat ~/.ssh/config | grep github | wc -l) == 0 ]; then
cat << EOS >> ~/.ssh/config
Host github github.com
User git
Hostname github.com
Port 22
IdentityFile ~/.ssh/id_rsa_github
EOS
fi

echo "please, Adding a new SSH key to your GitHub account."
echo "https://github.com/settings/ssh"
echo ""

cat ~/.ssh/id_rsa_github.pub
```

仕様

+ `~/.ssh/id_rsa_gitlab` が存在しなければ新規作成（上書きしたい場合は実行前に手動削除する）
+ `~/.ssh/config` がなければ新規作成
+ `~/.ssh/config`がある場合、config内に `github` の文字列が存在しなければ末尾に設定を追記
+ コピー用に最後に `~/.ssh/id_rsa_gitlab.pub` をコンソール（標準出力）に出力

あくまでも環境作成後の初回設定が目的のため、あんまり複雑なことはしてません。

# 使用方法
`curl` か `wget` 経由でダウンロード後、bashで実行します。
パイプで渡すとパスフレーズのプロンプトが処理できないため、プロセス置換で渡しています。

```bash:curl
$ bash <(curl -L https://raw.githubusercontent.com/koara-local/setup_github/master/setup_github.sh)
```

```bash:wget
$ bash <(wget https://raw.githubusercontent.com/koara-local/setup_github/master/setup_github.sh -O -)
```

実行後、RSA鍵のパスフレーズ入力のプロンプトが表示されるので表示に従って入力します。
後はコンソールの最後に表示された公開鍵をGithubに登録して終わりです。
[SSH and GPG keys](https://github.com/settings/ssh)

# 実行例

```console:実行例(Ubuntu)
koara@ubuntu:~$ bash <(curl -L https://raw.githubusercontent.com/koara-local/setup_github/master/setup_github.sh)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   671  100   671    0     0   4477      0 --:--:-- --:--:-- --:--:--  4503
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/koara/.ssh/id_rsa_github.
Your public key has been saved in /home/koara/.ssh/id_rsa_github.pub.
The key fingerprint is:
SHA256:qLl71s0zlS4YsUYF4CN8E1P1/SDucK4d7Z849sDMVoA koara@ubuntu
The key's randomart image is:
+---[RSA 2048]----+
|      +ooo.      |
|   . . o  ....   |
|    o =  . Eo.o  |
|     o +o  . ..o |
|      ..So. o. ..|
|     o  +  =*..  |
|    o  o = o+*.  |
|     .o o *oo=o .|
|    o+    .+o.++.|
+----[SHA256]-----+
please, Adding a new SSH key to your GitHub account.
https://github.com/settings/ssh

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCnVYvYj97H18GwQaearu2JzWPwk6fcDcwoYVu8n+U9VGIET+DB9YdMlksG9aRoSb2E0E+M1uriG5KKCaVdgSGGIHY3+lEl3xq1Fkr6mJ6WzBg0Z0I6Rq5PiBzXdlSd0SRilm/NFsv61Aqp6BXC6LyW9mlJ4bN9k4Fr9+ic/dVoTImxeidUG19d88otrXrfDFR7uDfqoThKDRJb+vbXlZb+Ai8ljFoYG39tn0pnhnEwIbhnbOCg9S5vspmwRjQYahXKgOwepkSDoc4BIG0PxXpvaj81b5ekonhdZM1uPKlOmnQA96G2aQutOVdoywuM+Z2Mk6FXk6V4vqQQk8ZFWO+1 koara@ubuntu
```
```console:sshのconfigの設定
koara@ubuntu:~$ cat ~/.ssh/config 
Host github github.com
User git
Hostname github.com
Port 22
IdentityFile ~/.ssh/id_rsa_github
```

表示された public key を Github に登録。
[SSH and GPG keys](https://github.com/settings/ssh)

```console:接続確認
koara@ubuntu:~$ ssh -T git@github.com
Hi koara-local! You've successfully authenticated, but GitHub does not provide shell access.
```

# 関連

[Githubのsshで何故かPermission denied (publickey)となる場合の設定メモ - Qiita](http://qiita.com/koara-local/items/9cc615be6b4b60f5654d)

# 参考
[gitHubでssh接続する手順~公開鍵・秘密鍵の生成から~ - Qiita](http://qiita.com/shizuma/items/2b2f873a0034839e47ce)
[Adding a new SSH key to your GitHub account - User Documentation](https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/)
[お前らのSSH Keysの作り方は間違っている - Qiita](http://qiita.com/suthio/items/2760e4cff0e185fe2db9)
[シェルスクリプトでパスワード入力プロンプト - Qiita](http://qiita.com/quenhulu/items/f322b909beb85d67c971)