前置き
2021年8月13日をもってGitHubではパスワード認証が廃止され、個人アクセストークンかSSHでの認証へと移行されました。
=> https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/
それに伴いSourceTreeでクローンしていたリポジトリにも接続できなくなっていたので、
GitHubにSSHを設定しSourceTreeと連携させた手順を記します。
実行環境
- MacOS Catalina v10.15.7
- Source Tree v4.1.1
SSH Keyの作成
SSH Key作成コマンド
下記コマンドを叩いてSSH Key作成を開始します。
% ssh-keygen -t rsa -b 4069 -C "github_email_address"
- -t: 暗号化方式 rsa公開鍵暗号方式を指定
- -b: 暗号化強度 鍵長4069を指定
- -C: コメント GitHub登録のメアドを指定(自由です)
パスワード設定
続いてパスワードを設定します。
設定しない場合は空のままEnterを叩けばOKです。
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/user_name/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): # パスワードを設定
Enter same passphrase again: # パスワード再入力
SSH Key出力
問題なく処理が完了すれば、生成されたSSH Keyの出力情報が表示されます。
初めて作成する場合はid_rsa
とid_rsa_pub
という名前で生成されます。
ここで生成された秘密鍵(id_rsa
)は自分以外には漏らさないように厳重に管理してください。
Your identification has been saved in /Users/user_name/.ssh/id_rsa. # 作成された秘密鍵
Your public key has been saved in /Users/user_name/.ssh/id_rsa.pub. # 作成された公開鍵
The key fingerprint is:
SHA256: github_email_address
The key's randomart image is:
+---[RSA 4069]----+
| 略 |
+----[SHA256]-----+
GitHubへSSH Keyを登録
- GitHubへログインし、 Settings → SSH and GPG keys → New SSH Key を選択
- Titleに識別用の名前をつける (今回はMacBookと名付けました)
- Bodyに先程作成した公開鍵(id_rsa.pub)の中身をペースト
- Add Keyを選択し登録
登録が完了すると以下のような表示になります。
SSH Config設定
GitHub接続へ利用するSSH Keyの設定を行う。
- vimで
~/.ssh/config
を開く - GitHub接続用情報を追加し、
IdentityFile
の欄に作成した秘密鍵を指定し上書き保存
# --- GitHub ---
Host github
HostName github.com
IdentityFile ~/.ssh/id_rsa
User git
# ---------------------------
- 所有者にのみ読み書き権限を付与するため、
chmod 600 ~/.ssh/config
を実行
秘密鍵をssh-agentへ登録
ssh-agentとは、RSA方式での認証を用いてSSH接続を行う際、秘密鍵に設定しているパスワードの入力を自動で行う機能です。
-
eval "$(ssh-agent -s)"
を叩き、Agent pidが表示されればssh-agentの起動OK -
ssh-add ~/.ssh/id_rsa(秘密鍵)
を叩き、秘密鍵に設定しているパスワードを入力 -
ssh-add -l
で登録されている秘密鍵を確認し、追加したものが表示されればOK
SSH疎通確認
登録した公開鍵と秘密鍵を用いてGitHubへの疎通確認をします。
- ターミナルにて
ssh -T git@github.com
を実行 - 表示されるfingerprintが GitHub's SSH key fingerprints に記載のものと一致するか確認し
yes
を叩く -
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
と表示されれば疎通確認OK
Source Treeに紐付け
Source Tree側でプロフィール設定を行い、SSH接続を用いるようにします。
- 環境設定 → ユーザー選択(なければ作成) → 編集 でユーザーの編集設定を開く
- 認証タイプをOAuth、プロトコルをSSHにし、SSHキーに作成した公開鍵(id_rsa.pub)が設定されていることを確認
- 保存をクリックするとGitHubが開かれて鍵が照合され、問題なければ再びSource Treeが開かれる
- GitHubのリポジトリページにて、CodeからSSH接続用のURLをコピーしてSouce Treeでクローンし直す
(既存のクローン済みリポジトリもSSHでクローンし直す必要がありそう)
終わりに
まだまだ勉強中の身ですので、
間違いやタイポ、不適切な表現がありましたらご指摘頂けると幸いです。