0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Permission Error 「The requested URL returned error: 403」 解消備忘録

Last updated at Posted at 2025-01-05

背景

GitHubで会社用と個人用のアカウントを分けて運用し始めたのですが、SSH設定が適切に行われておらず、The requested URL returned error: 403 エラーが発生しました。このエラーを解消するために、正しいSSH設定とリモートリポジトリのURL設定を記録します。

前提条件

用語説明

例文内の username はGitHubアカウント名を指します。

Goalは会社用と個人用のSSH設定なので、両方のアカウントについて同じ手順を実行します。まずは会社用(company)の設定を行い、その後、同じ手順で個人用(private)の設定を進めてください。

~/.ssh/ に以下のファイルが存在します。

SSHキーファイル

company / company.pub: 仕事用アカウントに対応するSSHキー
private / private.pub: 個人用アカウントに対応するSSHキー

設定ファイル

Config: SSH設定ファイル

その他ファイル

known_hosts / known_hosts.old: 接続したことがあるホストの情報

実行

1. SSH設定の確認

~/.ssh/config はSSHの設定ファイルで、SSH接続時の設定を簡略化するために使用されます。このファイルが存在しない場合は、手動で作成し、必要な設定を書き込みます。

~/.ssh/config
# company
Host company
    HostName github.com
    User git
    IdentityFile ~/.ssh/company
    AddKeysToAgent yes
    UseKeychain yes

# private
Host private
    HostName github.com
    User git
    IdentityFile ~/.ssh/private
    AddKeysToAgent yes
    UseKeychain yes
項目 説明
Host company SSHプロファイル名を指定します。この名前をGitリモートURLで使用します(例: git@company)。
HostName github.com 接続先ホスト名を指定します。この場合、GitHubのホスト(github.com)を指します。
User git 接続に使用するユーザー名を指定します。GitHubでは常にgitを指定します。
IdentityFile ~/.ssh/company SSH接続に使用する秘密鍵のパスを指定します。この例では~/.ssh/companyが使用されます。
AddKeysToAgent yes SSHキーをエージェントに追加する設定です。yesにすると、キーが自動でSSHエージェントに追加されます。
UseKeychain yes macOSでキーをキーチェーンに保存する設定です。保存されると次回以降パスフレーズの入力が不要になります。
確認ポイント
  • IdentityFile が正しく ~/.ssh/company ~/.ssh/private を指していること。
  • HostName が github.com になっていること。

2. SSHキーの生成

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
オプション 説明
-t rsa 鍵のタイプをRSAに指定。
-b 4096 鍵の長さを4096ビットに設定。
-C "your_email@example.com" GitHubアカウントに関連付けるメールアドレス。
  • 会社用キー
    /Users/yourname/.ssh/company
  • 個人用キー
    /Users/yourname/.ssh/private

3. 公開鍵の確認と登録

  • 秘密鍵: ~/.ssh/company または ~/.ssh/private
  • 公開鍵: ~/.ssh/company.pub または ~/.ssh/private.pub

GitHubにログインし、SSHキー設定ページにアクセス。
公開鍵の内容をコピーして、「New SSH Key」から登録します。

確認ポイント
  • 公開鍵が ssh-rsa または ecdsa-sha2-nistp256 などの形式で始まること。
  • 最後に、鍵を生成した際に指定したメールアドレスが表示されること

4. SSHキーをエージェントに追加

SSHキーをエージェントに追加することで、リモートリポジトリへの接続時にSSHキーを自動で使用できるようになります。この設定により、毎回パスフレーズを入力する必要がなくなり、操作がスムーズになります。

ssh-add ~/.ssh/company
追加されたキーを確認
ssh-add -l
成功時の応答
4096 SHA256:... /Users/yourname/.ssh/company (RSA)

5: リモートリポジトリのURLを設定

リモートリポジトリのURLをSSHプロファイル形式に設定することで、会社用アカウント(company)と個人用アカウント(private)を簡単に切り替えて運用できます。この設定により、誤ったアカウントで接続するリスクを防ぎます。

git remote set-url origin git@company:username/repository-name.git
設定確認
git remote -v
成功時の応答
origin  git@company:hsnyt/home.git (fetch)
origin  git@company:hsnyt/home.git (push)

6. 接続テスト

ssh -T git@company
成功時の応答
Hi username You've successfully authenticated, but GitHub does not provide shell access.
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?