1
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

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

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

koara-local/setup_github

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

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

注意

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

スクリプト内容

setup_github/setup_github.sh at master · koara-local/setup_github

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 をコンソール(標準出力)に出力

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

使用方法

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

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

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

実行例

実行例(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
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

接続確認
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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?