🔑

GitHubアカウントを複数運用のための準備

に公開

やりたいこと

Githubのアカウントを仕事とプライベートで2つ以上運用する準備

環境 🌎

環境ははMac 💻 になります。

鍵ペアの生成 🔑

新規でGitHubアカウントを作成するために秘密鍵と公開鍵のペアを生成します。

秘密鍵と公開鍵の違い 🔐
  • 秘密鍵 (id_rsa): サーバーにログインするための鍵で、厳重に管理する必要があります。漏洩すると、アカウント乗っ取りなどの被害に繋がる恐れがあります。
  • 公開鍵 (id_rsa.pub): 秘密鍵に対応する鍵で、サーバに登録することで、パスワード認証ではなく鍵認証でのログインが可能になります。公開鍵自体は漏洩しても問題ありませんが、秘密鍵と間違えて公開しないように注意する必要があります。
Shell
$ cd ~/.ssh
$ ssh-keygen -f id_rsa_{アカウント名}

上記コマンドを実行すると、id_rsa_{アカウント名} (例: id_rsa_personal) と id_rsa_{アカウント名}.pub (例: id_rsa_personal.pub) というファイルが生成されます。

  • id_rsa_{アカウント名}: 秘密鍵 (厳重に管理する)
  • id_rsa_{アカウント名}.pub: 公開鍵 (GitHub に登録する)

~/.ssh/config ファイルの設定

~/.ssh/config ファイルに、各アカウントの設定を追加します。

~/.ssh/config
Host github_{アカウント名}
    IdentityFile ~/.ssh/id_rsa_{アカウント名}
    HostName github.com

上記はテンプレートです。以下の部分を自分の環境に合わせて置き換えてください。

  • {アカウント名}: アカウント名
  • {パス}: 秘密鍵のパス (例: ~/.ssh/id_rsa_{アカウント名})

複数のアカウント設定を追加する場合は、それぞれ異なる Host ブロックで記述します。

config(例)
Host github_{アカウント名_1}
    IdentityFile ~/.ssh/id_rsa_{アカウント名_1}
    HostName github.com
    
Host github_{アカウント名_2}
    IdentityFile ~/.ssh/id_rsa_{アカウント名_2}
    HostName github.com

設定したら :wq で保存する。

公開鍵の登録

各アカウントの公開鍵を、GitHub に登録します。

  1. GitHub にログインします。
  2. 右上のプロフィールアイコンから Settings をクリックします。
  3. SSH and GPG keys メニューを選択します。
  4. New SSH key ボタンをクリックします。
  5. Title に任意のタイトルを入力します。
  6. Key フィールドに、公開鍵の内容を貼り付けます。
  7. Add SSH key ボタンをクリックします。

クリップボードにコピーする方法

Shell
$ pbcopy < ~/.ssh/id_rsa.pub # macOSの場合
$ clip < ~/.ssh/id_rsa.pub # Windowsの場合

テスト接続 🎉

設定が完了したら、テスト接続を行います。

Bash
$ ssh -T github_{アカウント名}

上記コマンドを実行すると、正常に接続できれば、以下のメッセージが表示されます。

Hi {アカウント名}! You've successfully authenticated, but GitHub does not provide shell access.

Githubアカウントの切り替え

git config --globalコマンドを利用して切り替えます。

~/.zshrc
function git_account1() {
  git config --global user.name "[GitHubアカウント名_1]"
  git config --global user.email "[GitHubのメールアドレス_1]"
}

function git_account2() {
  git config --global user.name "[GitHubアカウント名_2]"
  git config --global user.email "[GitHubのメールアドレス_2]"
}

ターミナルで切り替え、確認をする場合

Shell
$ git_account1 # GitHubアカウント名_1に切り替え
$ git_account2 # GitHubアカウント名_2に切り替え
$ git config --get user.name  # アカウント名を確認

リモートと接続

アカウント毎に設定した Host名 を用いて接続を行います。

git@github_{アカウント名_1}git@github_{アカウント名_2}を切り替えて利用します。

Shell
#アカウント名_1のリモートと接続
% git remote add origin git@github_{アカウント名_1}:<アカウント>/<リポジトリ>.git

#アカウント名_2のリモートと接続
% git remote add origin git@github_{アカウント名_2}:<アカウント>/<リポジトリ>.git

SSH 接続を使って複数の GitHub アカウントを効率的に運用することができます。

参考文献 📚

以上

Discussion