SSHキーを作成する
ed25519 形式の鍵ペアを作ります。-C はどの鍵かを見分けるためのコメント、-f は保存先のファイル名です。実行するとパスフレーズを2回聞かれます。
ssh-keygen -t ed25519 -C "personal-github-macos" -f ~/.ssh/id_ed25519_github_macos_personal手順書のコマンドを、あなたの値に置き換えて出します。黄色が置き換わった値、赤がまだ入力していない値です。
完了 0 / 20
ed25519 形式の鍵ペアを作ります。-C はどの鍵かを見分けるためのコメント、-f は保存先のファイル名です。実行するとパスフレーズを2回聞かれます。
ssh-keygen -t ed25519 -C "personal-github-macos" -f ~/.ssh/id_ed25519_github_macos_personal秘密鍵(拡張子なし)と公開鍵(.pub)の2つが並んでいれば成功です。
ls -la ~/.ssh/id_ed25519_github_macos_personal*どの接続先でどの鍵を使うかを alias(Host 名)で指定します。以下の内容を ~/.ssh/config に貼り付けてください。
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github_macos_personal
IdentitiesOnly yes
AddKeysToAgent yes
UseKeychain yes
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github_macos_work
IdentitiesOnly yes
AddKeysToAgent yes
UseKeychain yesターミナルを開くたびに Keychain から鍵を読み込ませます。以下を ~/.zshrc の末尾に追記してください。
# GitHub SSH keys
/usr/bin/ssh-add --apple-use-keychain \
~/.ssh/id_ed25519_github_macos_personal \
~/.ssh/id_ed25519_github_macos_work \
2>/dev/null追記した内容を現在のターミナルに反映し、正しく書けているかを確認します。
source ~/.zshrc
grep -n "ssh-add" ~/.zshrc表示された1行をまるごとコピーし、GitHub の Settings → SSH and GPG keys に貼り付けます。公開鍵(.pub)は人に見せてよい側の鍵です。
cat ~/.ssh/id_ed25519_github_macos_personal.pub1行目で認証、2行目で実際に使われている鍵、3行目で鍵を直接指定した場合の結果を確認します。Hi <ユーザー名>! と返れば成功です。
ssh -T git@github-personal
ssh -G github-personal | grep -i identityfile
ssh -T -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519_github_macos_personal git@github.comgithub.com ではなく alias を書くのがポイントです。個人リポジトリなら1行目、組織リポジトリなら2行目を使います。
git@github-personal:YOUR_GITHUB_USER/YOUR_REPOSITORY.git
git@github-personal:YOUR_GITHUB_ORG/YOUR_REPOSITORY.git未入力: GitHub ユーザー名 / リポジトリ名 / GitHub 組織名左の入力欄を埋めると置き換わります。
すでに clone 済みのリポジトリは、接続先 URL を alias 形式に差し替えます。
git remote set-url origin git@github-personal:YOUR_GITHUB_USER/YOUR_REPOSITORY.git
git remote -v未入力: GitHub ユーザー名 / リポジトリ名左の入力欄を埋めると置き換わります。
ssh-add -l に鍵が出てこない、認証を求められ続ける、といった場合はこれを実行します。
/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_ed25519_github_macos_personal