🔳

GitHubで「Repository not found」が出たときの原因と解決法

に公開

はじめに

個人用のGitHubリポジトリに push しようとしたとき、以下のようなエラーが出ることがあります。

$ git push -u origin main
ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

原因は SSHキーの競合 でした。
私の場合、会社用GitHubアカウントに紐づくSSHキーが優先され、個人用リポジトリへのアクセスができない状態になっていました。

現象の確認

1. SSH接続の確認

$ ssh -T git@github.com

出力例:

Hi <USERNAME>! You've successfully authenticated, but GitHub does not provide shell access.
  • 「Hi <USERNAME>!」と表示されればSSH認証は成功
  • ただし会社用アカウントで認証されている可能性があります

2. Gitリモートの確認

$ git remote -v

出力例:

origin  git@github.com:<USERNAME>/repository.git (fetch)
origin  git@github.com:<USERNAME>/repository.git (push)
  • 個人用リポジトリをpushしたいのに、会社用SSHキーで接続されている場合があります

解決手順

1. 個人用SSHキーを作成

$ ssh-keygen -t ed25519 -C "personal-github"
  • ファイル名例: ~/.ssh/id_ed25519_personal
  • 公開鍵 (.pub) を GitHub 個人アカウントに登録
  • パスフレーズは任意

2. SSH設定ファイルにホストを追加

~/.ssh/config に以下を追加します:

Host github.com-personal
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_personal
    IdentitiesOnly yes

【💡ポイント】
github.com-personal という別名をつけることで、会社用と個人用SSHを切り替えられます

ファイル構成
~/.ssh/
├── config                     # SSH設定ファイル(※上記で編集するファイル)
├── id_ed25519                 # 会社用SSH秘密鍵
├── id_ed25519.pub             # 会社用SSH公開鍵
├── id_ed25519_personal        # 個人用SSH秘密鍵
├── id_ed25519_personal.pub    # 個人用SSH公開鍵
├── known_hosts                # 接続済みホストの鍵情報
└── authorized_keys            # 自分の公開鍵を登録する場合(任意)

3. GitリモートURLを変更

リポジトリに個人用SSHを使わせるように変更します。

$ git remote set-url origin git@github.com-personal:<USERNAME>/<REPO>.git
  • <USERNAME> と <REPO> は個人アカウントとリポジトリ名に置き換えてください

4. 動作確認

$ git push -u origin main
  • エラーが出なければ成功です
  • git remote -v で URL が github.com-personal になっていることを確認してください

SSH切り替えフロー図(イメージ)

  • 会社用SSHは IdentityFile ~/.ssh/id_ed25519 を使用
  • 個人用SSHは IdentityFile ~/.ssh/id_ed25519_personal を使用
  • HostName github.com は両方同じGitHubですが、Hostを別名にすることで切り替え可能

補足

  • 会社用アカウントと個人用アカウントを1台のPCで共存させたい場合は、この方法が推奨
  • SSHキーは ssh-add -l で現在ロードされているか確認可能
  • Mac / Linux / Windows (Git Bash) でほぼ同じ手順で対応可能

Discussion