既にGitHubを使っているPCで、別のGitHubアカウントを使おうとしたとき、以下のようなエラーに遭遇しました。
remote: Permission to アカウント名2/リポジトリ名.git denied to アカウント名1.
fatal: unable to access 'https://github.com/アカウント名2/リポジトリ名.git/': The requested URL returned error: 403
なんだかPermissionがdenied・・・
pushしようとしたときかな?もともとのアカウントの認証情報を使って、アクセスしようとして怒られたみたい。
対処として、SSH接続を使って複数のGitHubアカウントを切り替えて運用することにしたのでシェアします。
なぜ403エラーが出るのか?
GitHubは、HTTPSやSSHを使ってユーザーを認証します。
すでに使っているアカウントの認証情報(SSHキーやキャッシュされたHTTPS認証)が残っていると、新しいアカウントのリポジトリにアクセスできず403エラーになってしまうのだそう。
じゃぁどうするのか・・・
SSHキーで複数アカウントを管理しよう!
調べると認証情報のリセットだとか色々出てきますが、結局、
SSHキーとconfigファイルの設定でアカウント管理がスマートになったのでご紹介。
1.SSHキーを作成する
まずは、新しいアカウント用のSSHキーを作成します。
ssh-keygen -t ed25519 -C "yourname@example.com"
- ssh-keygen ← SSHキーを作るコマンド
- -t ed25519 ← 鍵の種類。暗号化方式。
- -C "コメント(emailなど)" ← 識別用のコメント(GitHubではメールアドレスを使うのが一般的)
コマンドを実行すると、以下のように聞かれます。
Enter file in which to save the key (/home/user/.ssh/id_ed25519): ~/.ssh/id_ed25519_account2
ここで、ファイル名を指定できます。
今回の例だと以下の2つのファイルが作成されます:
~/.ssh/id_ed25519_account2(秘密鍵)
~/.ssh/id_ed25519_account2.pub(公開鍵)
複数アカウントを使う場合は、わかりやすい名前にすると管理しやすいです。
2. SSH設定ファイル(config)の編集
複数のSSHキーを使い分けるために、~/.ssh/config を編集しましょう。
configという名前でファイルを作って、以下のような内容を入力します。
# アカウント1用
Host github-account1
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_account1
# アカウント2用
Host github-account2
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_account2
- Host github-アカウント名
- HostName github.com ← このまま
- User git ← このまま
- IdentityFile ssh秘密鍵のある場所
ご自分のアカウントに合わせて書き換えてください。
3.GitHubに公開鍵を登録する
新しく作成したSSHキーの公開鍵を、GitHubの対象アカウントに登録します。
mac、Linux系の方は以下のコマンドで公開鍵を表示
cat ~/.ssh/id_ed25519_account2.pub
メモ帳で開いても見れます。
💡 ~/ はホームディレクトリを示す省略記号です。
そのため、SSHキーは通常、
~/.ssh/(例:/Users/ユーザー名/.ssh/)
に保存されています。
GitHubにアクセス!
「Settings」→「SSH and GPG keys」→「New SSH key」で登録
Add new SSH Keyのページでは、
- Title: 自分が管理するための分かりやすい名前
- Key type: Authentication Key
- Key: 公開鍵をコピペしましょう。(ssh-ed25519 AAAつづく...)
4.ユーザーを設定する
リポジトリごとにユーザー名とメールアドレスを設定します。
git config user.name "設定したいユーザー名"
git config user.email "ユーザーのメールアドレス"
5.リポジトリの接続先を変更する
リポジトリごとに、使うSSHホストを指定します。
最初のお決まりの設定コマンドを打つ時に
git add .
git commit -m 'first commit'
git remote add origin git@github-account2:account2/リポジトリ名.git ←💡ここでSSHホストを指定
git branch -M main
git push origin main ←💡ここで403エラーが返ってこなければ成功!
のようにします。
※ account2 の部分はご自身のGitHubアカウント名に書き換えてください
※ github-account2 は ~/.ssh/config で定義したホスト名です。
💡すでに origin が設定されている場合は、このコマンドで接続先を変更できます。
git remote set-url origin git@github-account2:アカウント名2/リポジトリ名.git
⚠️ 403エラーが出る場合は、SSHキーの登録や ~/.ssh/config の設定を再確認してください。
接続確認
SSH接続が正しくできるか確認するには以下のコマンドを使います。
ssh -T git@github-アカウント名
成功すると、次のようなメッセージが表示されます:
Hi アカウント名2! You've successfully authenticated, but GitHub does not provide shell access.
まとめ
- GitHubで複数アカウントを使うには、SSHキーと設定ファイルの使い分けが重要
- 403エラーは「前のアカウントでアクセスしようとしている」ことが原因
- SSH設定を整理すれば、快適に複数アカウントを運用できる
この記事が誰かの助けになれば幸いです👍