背景
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接続時の設定を簡略化するために使用されます。このファイルが存在しない場合は、手動で作成し、必要な設定を書き込みます。
# 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.