msano / 1台のパソコンで複数のGitHubアカウントを管理する

Created Sun, 09 Aug 2026 19:57:11 +0000 Modified Sun, 09 Aug 2026 21:00:42 +0000
1011 Words

概要

プライベートと仕事で1台のパソコンで2つのGitHubアカウントを管理する機会がありました。 ここではリポジトリのクローンやpush等、SSH接続するために必要な設定について記載します。

設定手順

現在の設定を確認する

まずはSSHがどのアカウントで認証されているかを確認します。

ssh -T git@github.com

SSHが設定できていれば、次のように返ってきます。

Hi <ユーザー名>! You've successfully authenticated, but GitHub does not provide shell access.

.ssh/configを設定する

SSHをGitHubアカウントによって使い分ける場合には、configで設定を行う必要があります。

例:

# メインアカウント
Host github-hoge
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_hoge
    IdentitiesOnly yes

# サブアカウント    
Host github-fuga
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_fuga
    IdentitiesOnly yes
  • Hostは設定上のニックネームです
  • HostNameは実際のホスト名です
  • UserはSSH接続先のサーバーにログインする時に使用するユーザー名です。(GitHubアカウント名とは別です。git@github.com:<user|organisation>/<repo>.gitでいう頭のgitがこれに相当します。)
  • IdentityFileはSSH接続時に参照するSSH鍵のパスです。
  • IdentitiesOnlySSHがどの鍵を認証に使うかを制限するための設定です。

特にIdentitiesOnly yesは、今回のように複数のGitHubアカウントを1台のパソコンで扱う場合、他の鍵を参照させないために必須の設定となります。

設定後確認

設定が済んだら、サブアカウントを確認するため次のコマンドを打ってみましょう

ssh -T git@<サブアカウントの Host>

例えば上記の設定だと次のコマンドです。

ssh -T git@github-fuga

設定ができていれば、サブアカウントのGitHubアカウント名で返事が返ってくるでしょう。

補足

もう一点、複数のGitHub運用で大事なことは、git/configユーザー名とE-mailアドレスの設定です。 デフォルトではメインアカウントが設定されているため、この操作を行わないと、意図しないアカウントでcommit, pushしてしまう可能性があります。

私はサブアカウントで管理するリポジトリ単位毎に設定を行います。 対象のリポジトリで以下を打ち込みます。

git config user.name "example-account-name"
git config user.email "example@mail.com"

まとめ

1台のパソコンで複数のGitHubアカウントを管理する際の.ssh/configgit/configについて学ぶことができました。

参考

SSH Config SSH defaults, config, and priorities