GitLab / GitHub でそれぞれ SSH 鍵を使い分けるために準備したこと

現在の勤務先ではコードリポジトリ・CI/CD ツールとして GitLab を使っています。
プライベートのお勉強用に GitHub を使ってみようとおもったので、それぞれ別の SSH 鍵を使うように設定してみました。

実行環境

設定

GitHubSSH 鍵の作成

GitLab 用の SSH 鍵として ~/.ssh/id_rsa(.pub) を作成済みなので、GitHub Docs の手順にしたがい新たに使用するキーのみ作成します。

Generating a new SSH key and adding it to the ssh-agent

$ ssh-keygen -t ed25519 -C "your_email@example.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/<User名>/.ssh/id_ed25519): /Users/<User名>/.sshid_ed25519.github.com ※ GitHub 用とわかりやすくするためにファイルを変更してます。
Enter passphrase (empty for no passphrase): ※パスフレーズを入力
Enter same passphrase again: ※パスフレーズを再入力

GitHub への SSH 公開鍵登録

続いて、作成した SSH 公開鍵を GitHub アカウントに登録します。
下記コマンドで SSH 公開鍵をクリップボードにコピーします。

$ pbcopy < ~/.ssh/id_ed25519.pub.github.com

GitHub 画面右上部のアイコン → Settings → SSH and GPG keys に飛んだあと、* New SSH key * をクリックしてから Key 欄に SSH 公開鍵をペーストします。
GitHub Docs にはスクリーンショット付きの手順があるのでわかりやすいです。
Adding a new SSH key to your GitHub account

~/.ssh/config の修正

接続先が GitHub の場合にのみ今回作成した SSH 鍵を使うよう、~/.ssh/config に下記の設定を追記します。

Host github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519.github.com

動作確認

下記のコマンドを入力し GitHub への SSH 接続 を試します。

% ssh -T git@github.com
Enter passphrase for key '/Users/<User名>/.ssh/id_ed25519.github.com': ※ SSH 鍵生成時に設定したパスフレーズを入力
Hi xiyegen! You've successfully authenticated, but GitHub does not provide shell access.

作成済みのリポジトリの git clone も試してみます。

$ git clone git@github.com:xiyegen/git-lesson.git
Cloning into 'git-lesson'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (4/4), done.

ちゃんと動いたようです。