毎度毎度のVM環境作成後のGitHubのSSH設定を楽にしたかったので、curl
か wget
経由でスクリプトダウンロードして実行すると自動設定できるようにしました。スクリプトの実行 + 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
#!/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 -L https://raw.githubusercontent.com/koara-local/setup_github/master/setup_github.sh)
$ bash <(wget https://raw.githubusercontent.com/koara-local/setup_github/master/setup_github.sh -O -)
実行後、RSA鍵のパスフレーズ入力のプロンプトが表示されるので表示に従って入力します。
後はコンソールの最後に表示された公開鍵をGithubに登録して終わりです。
SSH and GPG keys
実行例
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
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
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
参考
gitHubでssh接続する手順~公開鍵・秘密鍵の生成から~ - Qiita
Adding a new SSH key to your GitHub account - User Documentation
お前らのSSH Keysの作り方は間違っている - Qiita
シェルスクリプトでパスワード入力プロンプト - Qiita