🐥
Githubの組織のリポジトリにトークンでアクセスする方法
GitHubのOrganizationがオーナーになっているリポジトリへのアクセスは,自分のアカウントで所有するリポジトリよりもセキュリティが厳格である.
本記事では,以前に遭遇した403エラーとその解決策について記録する.
HTTPSでの通常のアクセス(個人リポジトリ)
自分がオーナーとなっているプライベートリポジトリには,以下のようにHTTPS経由でアクセスできる.
git clone https://github.com/[ユーザー名]/[リポジトリ名].git
Username for 'https://github.com': [ユーザー名]
Password for 'https://[ユーザー名]@github.com': [Personal access token]
Password
と表示されるが,入力すべきなのはPersonal Access Token(PAT)である.
トークンは,GitHubの Developer settings > Personal access tokens > Fine-grained tokens
から発行できる.
トークンを作成する際には,以下のようにリポジトリの選択とアクセス権限を設定する.
- Repository access
- Only select repositories(必要なリポジトリを明示的に選択)
- Repository permissions
- Contents(Read and write)
- Workflows(Read and write)(必要に応じて)
作成したトークンをキーチェーンや git credential.helper
に保存すれば,以降は認証を省略できる.
問題:Organizationリポジトリへの403エラー
fine-grained tokenを使って,自分がオーナーではないOrganizationのプライベートリポジトリにアクセスしようとすると,403(Forbidden)エラーが発生することがある.
解決策:Classic tokenの利用
組織のリポジトリに確実にアクセスするには,fine-grained tokenではなくclassic tokenを利用する方法が簡便である.
トークンのスコープ設定例(classic token)
- repo
- workflow
- admin:org(必要に応じて)
HTTPSでの明示的なトークン指定
git clone https://[YOUR-USERNAME]:[YOUR-TOKEN]@github.com/<organization>/<repo>.git
clone後,以下のコマンドでリモートURLを確認できる.
git remote -v
トークンがURLに含まれた状態で保存されるため,セキュリティ上の理由から共有端末での利用やログ管理には注意が必要である.
トークン更新時の対応
トークンが期限切れとなった場合などには,以下のようにリモートURLを更新すればよい.
git remote set-url origin https://[YOUR-USERNAME]:[YOUR-TOKEN]@github.com/<organization>/<repo>.git
Discussion