Git Bashでgithubに接続できるようにする(SSH)

1,SSHの鍵を作成する

Git Bashを立ち上げて、RSAキーペア(公開鍵と秘密鍵)を作る。
-b:長さ。デフォルトは2048(256バイト)だけど推奨は4096(512バイト)みたい。
-C:鍵の中に入るコメント。無くてもOKだけど、PCが識別できるコメントを入れておく。

$ ssh-keygen -t rsa -b 4096 -C "○○○○○"

どこに作るか聞かれる。
githubの鍵だということが分かるようにファイル名だけ変えておく。

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/user/.ssh/id_rsa): /c/Users/user/.ssh/id_rsa_github

パスワードを2回聞かれるので入力すると、キーペアができる。(id_rsa_githubとid_rsa_github.pub)
あたりまえだけどgithubのログインパスワードとかとは全く関係ない。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/user/.ssh/id_rsa_github
Your public key has been saved in /c/Users/user/.ssh/id_rsa_github.pub
The key fingerprint is:
SHA256:(略) ○○○○○
The key's randomart image is:
+---[RSA 4096]----+
(略)
+----[SHA256]-----+

Linuxとかの場合は、安全のためにここで秘密鍵(/c/Users/user/.ssh/id_rsa_github)のパーミッションを600にchmodするのがセオリーだが、今回はログインパス付きのWindowアカウント上なので特に何もしません。(chmodしても変わらない)

それと、公開鍵と秘密鍵が同じ.ssh/に配置された状態になるので、なんとなく公開鍵は別Dirに移してアーカイブにしておきます。

2,公開鍵をgithubに登録する

  1. githubにログイン
  2. 右上のアカウントメニュー > Settings
  3. 左メニューの「SSH and GPG keys」 > New SSH Key
  4. ローカルに作った「id_rsa_github.pub」をエディタで開いてコピーし、「Key」に貼り付ける
  5. 「Title」はPCを識別できる名前をつける(何でもOK)

3,sshのconfigに追記する

これやらなくてもsshコマンドで接続できますが、面倒くさいのでconfigにエイリアス(ショートカット?)を追加。

$ vim ~/.ssh/config

Userはgithubのアカウントとか関係なく全員「git」。
IdentityFileは作成した秘密鍵を指定する。

Host github
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_github

4,Git Bashから接続する

これで接続できるようになる。

$ ssh github

パスワードを聞かれるので、上記でSSH鍵を作った時に入力したパスを入力。
「You've successfully authenticated, but GitHub does not provide shell access.」って表示されれば成功です。

やってることは以下と同じ。

$ ssh -i ~/.ssh/id_rsa_github git@github.com