GitHubにSSHで接続するための公開鍵設定

2021-01-10

ユーザ認証を必要とする GitHub との通信の度にユーザ名やパスワードを入力するのは面倒でセキュリティ的にも微妙なので,SSH 鍵認証の利用がおすすめです.

SSH鍵生成

作っていなければ.

terminal
$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/<username>/.ssh/id_rsa):
Created directory '/home/<username>/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/<username>/.ssh/id_rsa
Your public key has been saved in /home/<username>/.ssh/id_rsa.pub

ファイル名やディレクトリを指定しなければ,デフォルトで ~/.ssh/id_rsa(秘密鍵),~/.ssh/id_rsa.pub(公開鍵)が作成されます.

GitHubへの登録

生成された鍵ペアのうち,公開鍵を GitHub に登録します.まず,以下のコマンドで公開鍵を表示します.

terminal
$ cat ~/.ssh/id_rsa.pub

この内容を GitHub の設定ページの [New SSH Key] で鍵を新規作成してコピペします.

最終行に PC 名の識別文字列を入れることができるようです(キー生成時に入っていた).

接続テスト

terminal
$ ssh -T git@github.com
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.

以降は SSH による接続が可能です.

URL自動置換設定

GitHub の URL は2種類あります.

- HTTPS: https://github.com/<username>/<repository>.git
- SSH: git@github.com:<username>/<repository>.git

SSH を利用する場合は2行目の形式になりますが,よく案内に用いられているのは1行目の形式です.

普通に HTTPS で接続しようとしてクローンに失敗すること等があるので,1行目の形式で入力された URL であっても2行目の形式に変換されるように設定しておくと便利です.

terminal
$ git config --global url."git@github.com:".insteadOf "https://github.com/"

この設定をしておくと,以下のように設定が変更されます.グローバルで設定するとホームディレクトリ下に生成されます.

.gitconfig
[url "git@github.com:"]
    insteadOf = https://github.com/