🔐

1台のパソコンで複数のGitHubアカウントを切り替えて使いたい

2024/03/11に公開

はじめに

プライベート用のGitHub使用してきたパソコンに、新しく会社用のアカウントも使用することになりましたが、アカウントの紐付けと切り替えがうまくいかずに困ったので、方法をこちらにまとめます。

目次

  1. SSH鍵の作成とGitHubへの登録
  2. configファイルに新しい鍵を追加する
  3. ssh -Tで接続を確認してみる
  4. (うまく接続されていない場合)SSHエージェントに登録する
  5. 鍵を指定してcloneしてみる

手順

1. SSH鍵の作成とGitHubへの登録

PCで新しくSSHのキーを作成し、鍵の値をGitHubへ登録します。
以前記事にしたので、やり方がわからない場合は参照してください。
https://zenn.dev/kokoaola/articles/fea8e00847fcf0

2. configファイルに新しい鍵を追加する

  • configファイルとは:SSH経由でサーバーと接続する際の設定を記載するファイルのこと

configファイルが存在しているか確認

# 該当ディレクトリに移動
% cd ~/.ssh

# 中身を確認
% ls

# hoge hoge.pup config
# configという名前のファイルが存在していればOK 
  • configファイルが存在していなかった場合
# configファイルの作成
touch ~/.ssh/config

configファイルの内容の書き換え

  • configファイルに必要な内容を追加していきます

# 書き込む内容
#一つ目のアカウント
Host private
    HostName github.com
    IdentityFile ~/.ssh/private
    User git
    AddKeysToAgent yes
    UseKeychain yes

#二つ目のアカウント
#Hostの後は、好きな名前をつけてOK
Host job
    HostName github.com
    IdentityFile ~/.ssh/job
    User git
    AddKeysToAgent yes
    UseKeychain yes

3. ssh -Tで接続を確認してみる

#configファイルで付けた名前を使って鍵を指定
.ssh % ssh -T private  
#出力内容
#Hi private! You've successfully authenticated, but GitHub does not provide shell access.

.ssh % ssh -T job 
#出力内容
#Hi job! You've successfully authenticated, but GitHub does not provide shell access.
  • このとき上記のように鍵の名前に対応したアカウント名がそれぞれ表示されれば登録完了です。
  • もしも、異なる鍵の名前を入力しても同じアカウント名がHi ...の後に表示される場合、下の手順4をおこなってください。

4. (うまく接続されていない場合)SSHエージェントに登録する

SSHエージェントの確認

  • 使用したい鍵がSSHエージェントに登録されていることを確認します
ssh-add -l
# 出力内容
3072 SHA256:isfasldjlajsdklakjlajksANuRdt6s ユーザー名@PC名 (RSA)

# この例では、2つの鍵をSSH接続したいのに、1つしか登録されていません
# 鍵の数が異なっている場合は、下記の手順を実行します

仕事用のSSH鍵を登録

  • 新しく作成した鍵のパスを入力します
ssh-add ~/.ssh/job

再度SSHエージェントの確認

登録されている鍵が2つになりました

ssh-add -l
#出力内容
3072 SHA256:isfasldjlajsdklakjlajksANuRdt6s ユーザー名@PC名 (RSA)
3072 SHA256:isdkdkdkdkdkdkdkdkdkdkdkds ユーザー名@PC名 (RSA)

これでSSHの登録が完了しました。

5.鍵を指定してcloneしてみる

  • 仕事用アカウントでしか権限が与えられていないリポジトリをcloneしてみます。
#git@の後ろに、configで登録したHostの値を入れることで、任意の鍵を通して操作できます。
git clone git@job:cloneしたいリポジトリのユーザー名/リポジトリ名.git

SourcetreeやForkなどのGUIツールを使用する際にも、上記のURLを使用することで、鍵を指定してcloneができます。

Discussion