GitHubで「remote: Write access to repository not granted」エラーを解決する
問題の概要
GitHubでリポジトリのクローンやプッシュ操作を行う際に、以下のエラーが発生することがあります:
remote: Write access to repository not granted.
fatal: unable to access 'https://github.com/...../...../':
The requested URL returned error: 403
このエラーは、リポジトリへの書き込み権限が適切に設定されていない場合に発生します。GitHubがパスワード認証からトークン認証に移行したことにより、多くのユーザーがこの問題に直面しています。
主な原因と解決策
以下の解決策を順に試していくことをおすすめします。
1. パーソナルアクセストークン(PAT)の確認と設定
GitHubで認証を行うには、適切な権限を持つパーソナルアクセストークンが必要です。
クラシックトークンの作成手順
- GitHubの[Settings] → [Developer settings] → [Personal access tokens] → [Tokens (classic)]に移動
- [Generate new token] → [Generate new token (classic)]をクリック
- トークンの説明を入力(例: "Git操作用トークン")
- 有効期限を設定(最長1年)
- [Select scopes]で[repo]にチェックを入れる
- [Generate token]をクリックしてトークンを生成
- 表示されたトークン(
ghp_...
で始まる)を安全な場所に保存
重要
生成されたトークンは再表示できないため、必ずコピーして安全な場所に保存してください。
2. ファイングレーンドトークンの適切な設定
ファイングレーンドトークンを使用する場合は、以下の設定が重要です:
ファイングレーンドトークンの正しい設定
- [Repository access]で適切なリポジトリを選択
- [Permissions] → [Repository permissions] → [Contents]で[Read and write]を選択
- 必要に応じて[Metadata]の読み取り権限も追加
- 組織のリポジトリの場合は、正しい[Resource owner]を選択
TIP
ファイングレーンドトークンで問題が解決しない場合は、クラシックトークンを試してみてください。
3. リモートURLの確認と修正
現在のリモートURLを確認し、必要に応じて修正します:
# 現在のリモートURLを確認
git remote get-url origin
# HTTPSの場合のURL設定(トークンを使用)
git remote set-url origin https://{ユーザー名}:{トークン}@github.com/{組織名}/{リポジトリ名}.git
# SSHの場合のURL設定
git remote set-url origin git@github.com:{組織名}/{リポジトリ名}.git
4. GitHub Actionsのワークフローパーミッション設定
GitHub Actionsでこのエラーが発生する場合は、ワークフローの権限設定を確認します:
- リポジトリの[Settings] → [Actions] → [General]に移動
- [Workflow permissions]セクションで[Read and write permissions]を選択
- 変更を保存
5. 組織のベースパーミッション設定
組織のリポジトリで作業している場合:
- 組織の[Settings] → [Member privileges]に移動
- [Base permissions]を[Write]に設定
その他の解決策
キャッシュされた認証情報の削除
以前の認証情報がキャッシュされている場合、問題が発生することがあります:
macOSでの認証情報削除
- Keychain Accessを開く
- [Login] Itemsを選択
- "github.com"を検索
- 該当する項目を削除
GitHub CLIの使用
GitHub CLIを使用して認証を行う方法:
# GitHub CLIのインストール後
gh auth login
トラブルシューティングのフロー
以下のフローチャートで問題解決の手順を確認できます:
まとめ
「remote: Write access to repository not granted」エラーは、主に以下の原因で発生します:
- 不適切なパーソナルアクセストークンの権限設定
- 誤ったリモートURLの設定
- GitHub Actionsや組織レベルの権限制限
- キャッシュされた古い認証情報
ほとんどの場合は、適切な権限を持つPATの生成と正しいリモートURLの設定で解決できます。組織のリポジトリやGitHub Actionsを使用している場合は、追加の権限設定が必要なことを忘れないでください。
最新情報の確認
GitHubの認証方法や権限設定は頻繁に変更されるため、最新の情報はGitHub公式ドキュメントで確認することをおすすめします。