🔑

GitHubの複数アカウントをSSHで使い分ける方法

に公開

はじめに

GitHubを日常的に使うにあたって、次のような場面に遭遇します。

  • GitHubで複数アカウント(仕事用と個人用)を使い分けたい
  • どちらのアカウントでもリポジトリの作成やPushを行いたい
  • でも、認証エラーや混乱でPushできない…

そんなときに便利なのが SSH鍵によるアカウントの切り替え運用 です。
HTTPS経由の接続は一見シンプルですが、2段階認証やトークンの扱いで混乱しがちです。

一方でSSH接続を使えば、秘密鍵・公開鍵のペアを適切に管理するだけで、安全かつスムーズに認証が行えます。

本記事では以下をゴールとしています。

  • 複数のSSH鍵を用意し、それぞれのGitHubアカウントに対応させる
  • ~/.ssh/config を使ってアカウントごとの設定を明確に切り分ける
  • リポジトリごとに正しいアカウントでPushできるようにする

1. SSH鍵の作成

まずは、それぞれのGitHubアカウントに対応する**SSH鍵ペア(秘密鍵と公開鍵)**を作成します。

ここでは以下の2つの鍵を用意する例で進めます:

  • 仕事用アカウント → id_ed25519_work
  • 個人用アカウント → id_ed25519_personal
# 仕事用
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_work -C "your_work_email@example.com"

# 個人用
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_personal -C "your_personal_email@example.com"

-t ed25519:より安全で高速な鍵タイプ(推奨)
-f ~/.ssh/xxx:ファイル名を指定して上書きを防止
-C:GitHubのUIで識別しやすくするためのコメント

ここで、SSH鍵のタイプは固定ではなく選べるのですが、現在推奨されているのがed25519との事でした。

✅鍵の種類と違い

鍵の種類 特徴 長所 短所
ed25519 楕円曲線暗号(EdDSA)を使用 高速・安全・鍵が短い 古いOSでは非対応な場合あり(レア)
rsa 最も広く使われてきた 互換性が高い 鍵が長く、速度やセキュリティでやや劣る
ecdsa 楕円曲線だが非推奨 短くて高速 実装に不安があるため非推奨とされることが多い

それぞれのコマンド実行後、以下のようなファイルが ~/.ssh/ に生成されます

🔹仕事用鍵(id_ed25519_work を作成した場合)

ファイル名 用途 内容
~/.ssh/id_ed25519_work 秘密鍵(Private Key) ローカルでのみ使用。絶対に外部に出さない!
~/.ssh/id_ed25519_work.pub 公開鍵(Public Key) GitHub に登録する。誰に見せてもOK。

🔹個人用鍵(id_ed25519_personal を作成した場合)

ファイル名 用途 内容
~/.ssh/id_ed25519_personal 秘密鍵(Private Key) ローカルで使用。第三者には渡さないこと!
~/.ssh/id_ed25519_personal.pub 公開鍵(Public Key) GitHub(個人アカウント)に登録する。

2. GitHubへの公開鍵の登録

作成した公開鍵(.pubファイル)を、それぞれのGitHubアカウントに登録していきます。

ここでは例として以下の公開鍵を登録します:

  • 仕事用:~/.ssh/id_ed25519_work.pub
  • 個人用:~/.ssh/id_ed25519_personal.pub

🔹公開鍵の内容をコピーする

まずは、登録したい鍵の内容を確認します:

cat ~/.ssh/id_ed25519_personal.pub

実行すると、以下のような文字列が1行で出力されます(内容は人によって異なります):

ssh-ed25519 AAAAC3NzaC1lZD... your_email@example.com

この文字列全体をコピーし、GitHubに登録していきます。

[Profile Icon] → Settings → SSH and GPG keys
または直接アクセス:
👉 https://github.com/settings/keys

上記から「New SSH key」ボタンをクリック
Title:分かりやすい名前をつけます(例:My Laptop (Personal))
Key:先ほどコピーした公開鍵を貼り付け

最後に「Add SSH key」をクリックすれば完了です!

✅登録が完了すると?

対応する 秘密鍵が存在する環境から、GitHubにSSH接続できるようになります。

このあと、~/.ssh/config を設定すれば、アカウントごとの切り替え運用が可能になります。

次は、SSH接続をアカウントごとに使い分けるための ~/.ssh/config の設定方法を見ていきましょう。

3. ~/.ssh/config の設定

SSH鍵を複数用意しても、そのままでは GitHub 側がどの鍵を使うべきか判断できません

そのため、~/.ssh/config ファイルに設定を追加し、アカウントごとの接続先(ホスト)を明示的に分ける必要があります。

以下がサンプルコードになります。

# 仕事用 GitHub アカウント
Host github-work
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_work
    IdentitiesOnly yes

# 個人用 GitHub アカウント
Host github-personal
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_personal
    IdentitiesOnly yes

✅~/.ssh/config の設定項目一覧

項目名 意味・説明
Host 任意のホスト名。git@ホスト名: として使用される(例: github-work
HostName 実際の接続先ホスト名(GitHubの場合は常に github.com
User SSHログインユーザー名。GitHubでは常に git を指定
IdentityFile 使用するSSH秘密鍵のパス(例: ~/.ssh/id_ed25519_work
IdentitiesOnly 指定した鍵だけを使用させる。他の鍵を試行しない。yesを推奨

4. 既存リポジトリのリモートURLを切り替える

HTTPS → SSH の切り替えから、Push成功確認までの流れについてです

🔹現在のリモートURLを確認する

まずは、今どのURLが設定されているかの確認です

git remote -v

出力されたURLで見分けることができます。

🔹SSH形式に変更する

SSH形式に切り替えるには、次のように git remote set-url を使います

# 個人用アカウントでSSH接続する場合
git remote set-url origin git@github-personal:ホスト名/リポジトリ名.git
# 仕事用アカウントでSSH接続する場合
git remote set-url origin git@github-work:ホスト名/リポジトリ名.git

変更が行われたかの確認はgit remote -vです。
任意でSSH接続確認を行うこともあります。

ssh -T git@github-personal

ここまで設定できれば、実際に push してみましょう。
パスワード入力なしでPushが出来るようになれば、SSH設定の完了です!

5. よくあるエラーと対処法

エラー内容 原因と対策
Permission denied (publickey) GitHubに公開鍵が登録されていない、または鍵が間違い
Could not resolve hostname github-xxx ~/.ssh/config にその Host が未定義
fatal: Could not read from remote repository リモートURLの指定ミスやアクセス権限がない場合

おわりに

💡本記事のポイント

  • SSH鍵はアカウントごとに分けて作成しよう
  • ~/.ssh/config を使えば、ホスト名ごとに鍵を使い分けできる
  • git remote をSSH形式に切り替えることで、push/pullがスムーズになる
  • 認証エラーが起きたら、設定ファイルと公開鍵登録を見直そう

✅今後に向けて

  • GitHubだけでなく、GitLabやBitbucketにも同様のSSH運用が可能です
  • 複数環境(自宅PC・会社PC・CI)で同じ構成を維持するために、設定をドキュメント化しておくのがおすすめです

SSHを使ったGitの運用は、慣れればとても快適です。個人的なナレッジの共有ではありますが、アカウントが増えても落ち着いて対処できるよう、この記事が参考になれば幸いです!


Discussion