📝

GitHubアカウントを複数使いする

2025/01/27に公開

普段個人アカウントを使っているが、急遽別のアドレスでGithubアカウント作らないといけなくなったよ!!という時にどうぞ。

アカウント準備編

まずアカウントを作成しておく。
既存アカウントはログアウトしていても問題ない。
お好みだが、すでに既存アカウントでログインしているのであれば
別ブラウザでGithubに入り新規アカウントを作るのもあり。(後で2つのアカウント使うので)

既存アカウントページを開く

手順はこちら

アカウントページで右上にある自分の丸アイコンを押してメニューを開く。
Switch accountのどこーって探してたら右上の方にひっそりとあった。

ここを押すと「Add」が出てくるのでクリックするとログイン画面に飛ぶ。
ここに新しく作ったアカウントの情報を入れる。

新しいアカウントでログインできるので同じ要領でスイッチマークを押すと既存アカウントに戻れる。
これでGithub側はOK。

新規アカウントの設定

新規アカウントで自分で作ったリポジトリの作成・クローンは問題なくできる(はず)だが、別のリポジトリをクローンする場合、他にも設定が必要になる。

確認項目

  • リポジトリに紐づくアカウント管理
  • コミットの設定(ユーザー名・メールアドレス)
  • SSHキーの管理
  • 認証情報のキャッシュ

別リポジトリのクローン

クローンした際にでたエラー

リポジトリのURLが間違っている可能性もあるが、何も設定せずにクローンしようとするとこんな感じの内容が出るのでSSHキーを設定する必要がある。

An unexpected error occurred while performing the git request.
Cloning into 'クローン先のディレクトリパス'
warning: templates not found in 'テンプレート'
remote: Repository not found.
fatal:repository 'リポジトリ名' not found

SSHキーの確認

①ローカルでSSHキーが登録されているかを確認:ls ~/.ssh
②ここにid_rsaid_ed25519があれなSSHキーが存在していることになる
私の場合id_rsaはすでにあり、GithubにSSHキーを登録してみたけれど同じエラーが出たのでid_ed25519を作ることにした。
③SSHキーを作る:ssh-keygen -t ed25519 -C "ここにGithubに登録しているメルアド"
④SSHキーをコピーする:pbcopy < ~/.ssh/id_ed25519.pub
⑤Github側にSSHキーを登録(https://github.com/settings/keys)
⑥登録後ssh -T git@github.comで確認をする

この手順は複数アカウントでも初めて設定するときも変わらない認識。
SSHキーの作り方やGithubの登録までは以下の記事を参考に。
https://qiita.com/suthio/items/2760e4cff0e185fe2db9

SSHキー登録までの詰まった部分

SSHキーを作成〜登録までの流れで詰まった部分がある。
ざっと確認ポイントをまとめると以下のような感じ。

①SSHキーが本当にあるか、登録しようとしているものに綴りミスがないかを確認
②SSHエージェントにキーが追加されていない
③アカウントごとにホスト名をconfigに設定していない
④キーの権限が関係している

SSHキーの設定やGithubとの認証がうまくできていない

ssh -T git@github.com

git@github.com: Permission denied (publickey).

というエラーが出てきた場合
SSHキーの設定やGithubとの認証がうまくできていないということになる。

Cloning into 'repository'...
no such identity: /Users/名前/.ssh/SSHキーのファイル名: No such file or directory
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

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

このエラーの場合はSSHキーが存在していないがために認証が失敗したという状態。

作成したキーのSSHエージェントの追加

「SSHキーの確認」で記載した③の部分。
キーを作成しコピー、Githubに貼り付けるだけではダメだったのでキーを作成したらSSHエージェントに追加するコマンドを実行してからGithubに設定します。

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/SSHキーのファイル名

アカウントごとにホストをconfigに設定する

GithubにSSHキー登録後でも前でもタイミングはお任せ。
アカウント複数使いする場合はconfigの設定も大事。
~/.ssh/config

Host ここは任意のホスト名をつけます
    HostName github.com
    User git
    IdentityFile ~/.ssh/SSHキーのファイル名

configに記述を追加、次の手順を踏み、任意のホスト名でアクセスできるようにする

git clone git@ホスト名:ユーザー名/リポジトリ.git

この時にfatal: remote error: が出るとホスト名:ユーザー名/リポジトリ.gitのどこかに記述ミスがある可能性がある。

なお、いつもクローンする際はForkGitを使っておりGithubのhttpsでクローンしているが今回は

fetchやPullができない

クローンできたのも束の間でPullをしようとしたら

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

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

In a case you entered incorrect password, please
update it in Keychain Access application.

が出た。
原因はリポジトリのリモート設定がgithub.comのデフォルトホストを使用しているからだそうで、ここをコンフィグに追加したホスト経由にする必要がある。

まずリポジトリのリモートURLを確認する:git remote -v

origin  git@github.com:ユーザー名/リポジトリ名.git (fetch)
origin  git@github.com:ユーザー名/リポジトリ名.git (push)

こんな感じに出る。
git@github.comになっている場合はデフォルトホストのままなのでリモートURLを修正する。

git remote set-url origin git@ホスト名:ユーザー名/リポジトリ.git

改めてgit remote -vを実行し

origin  git@ホスト名:ユーザー名/リポジトリ名.git (fetch)
origin  git@ホスト名:ユーザー名/リポジトリ名.git (push)

のようにconfigに設定したホスト名になっていたらOK。

余談

リモートリポジトリを確認したところ出てきたこのエラーは
単純に実行したディレクトリが違う部分だったため出ただけでした。

git remote -v
fatal: not a git repository (or any of the parent directories): .git

参照

https://docs.github.com/ja/authentication/troubleshooting-ssh/error-permission-denied-publickey

https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens

Discussion