Gitアクセストークンとは?設定方法から安全な使い方まで完全ガイド

プログラミング・IT

GitHubでコードを管理していたら、突然「パスワード認証が使えません」というエラーが出て困った経験はありませんか?

実は、GitHubは2021年8月13日からパスワード認証を完全に廃止しました。今後は「アクセストークン」という新しい認証方法を使う必要があります。でも安心してください。この記事を読めば、誰でも簡単にアクセストークンを設定できるようになりますよ。

スポンサーリンク
  1. Gitアクセストークンって何?なぜ必要になったの?
    1. パスワードの何が問題だったの?
    2. アクセストークンの3つの利点
  2. GitHubでアクセストークンを作成する方法
    1. 手順1:GitHubにログインして設定画面を開く
    2. 手順2:Developer settingsに移動
    3. 手順3:トークンの種類を選ぶ
    4. 手順4:トークンの設定を行う
    5. 手順5:トークンを生成する
    6. 手順6:トークンをコピーして保存(超重要!)
  3. アクセストークンを実際に使ってみよう
    1. 方法1:コマンドラインでの使用(基本)
    2. 方法2:URLに直接埋め込む方法
    3. 方法3:既存のリモートURLを更新する
  4. 認証情報を保存して毎回の入力を省略する方法
    1. credential helperとは?
    2. 方法1:cacheモード(メモリに一時保存)
    3. 方法2:storeモード(ディスクに永続保存)
    4. 方法3:Windows Credential Manager(Windows推奨)
    5. 方法4:macOSのKeychain(Mac推奨)
    6. 設定を確認する方法
    7. 保存された認証情報を削除する方法
  5. GitLab、Bitbucketでのアクセストークン
    1. GitLabのアクセストークン作成方法
    2. Bitbucketのアクセストークン
  6. アクセストークンのセキュリティベストプラクティス
    1. やるべきこと
    2. やってはいけないこと
  7. よくあるトラブルと解決方法
    1. トラブル1:「Authentication failed」エラー
    2. トラブル2:トークンが期限切れ
    3. トラブル3:トークンを紛失した
    4. トラブル4:権限不足エラー
    5. トラブル5:組織のリポジトリにアクセスできない
  8. まとめ:安全で便利なGit操作のために

Gitアクセストークンって何?なぜ必要になったの?

アクセストークン(Personal Access Token、略してPAT)とは、GitHubなどのGitホスティングサービスにアクセスするための「特別なパスワード」のようなものです。

パスワードの何が問題だったの?

従来のパスワード認証には、いくつかのセキュリティ上の問題がありました。

問題1:パスワードは強力すぎる
通常のパスワードは、あなたのアカウント全体にアクセスできてしまいます。つまり、パスワードが漏れたら、すべてのリポジトリ、設定、個人情報が危険にさらされます。

問題2:パスワードは使い回される
多くの人が複数のサービスで同じパスワードを使い回しています。どこか1つのサービスでパスワードが漏れると、GitHubアカウントも危険になるわけです。

問題3:自動化との相性が悪い
CI/CDツールや自動デプロイなど、プログラムから自動的にGitを操作したい場合、パスワードをコードに埋め込むのはセキュリティ上非常に危険でした。

アクセストークンの3つの利点

アクセストークンは、これらの問題を解決するために導入されました。

利点1:必要最小限の権限だけを与えられる
アクセストークンには「スコープ」という概念があります。例えば「リポジトリの読み取りだけ」「特定のリポジトリのみアクセス可能」といった制限をかけられるんです。

利点2:複数作成できて、個別に無効化できる
用途ごとに別々のトークンを作成できます。1つのトークンが漏れても、そのトークンだけを無効化すればOK。パスワードを変更する必要はありません。

利点3:有効期限を設定できる
トークンには有効期限を設定できるので、古くなったトークンが放置されるリスクを減らせます。

つまり、アクセストークンは「期限付きで、用途を限定した、無効化しやすいパスワード」というわけですね。

GitHubでアクセストークンを作成する方法

それでは、実際にGitHubでアクセストークンを作成してみましょう。

手順1:GitHubにログインして設定画面を開く

  1. GitHubにログインします
  2. 画面右上のプロフィールアイコンをクリック
  3. 「Settings(設定)」を選択

手順2:Developer settingsに移動

  1. 左側のメニューを一番下までスクロール
  2. 「Developer settings(開発者設定)」をクリック
  3. 左側のメニューから「Personal access tokens」を選択

手順3:トークンの種類を選ぶ

GitHubには2種類のアクセストークンがあります:

Tokens (classic) – クラシックトークン
従来からあるタイプ。設定が簡単ですが、アクセス範囲が広くなりがちです。

Fine-grained tokens – きめ細かいトークン
新しいタイプ。より細かく権限を設定できますが、すべての機能に対応しているわけではありません。

どっちを選べばいい?

初めての方は「Tokens (classic)」を選ぶのがおすすめです。GitHubも移行期間として両方をサポートしています。

それでは「Tokens (classic)」で進めましょう。

  1. 「Personal access tokens」→「Tokens (classic)」をクリック
  2. 「Generate new token」→「Generate new token (classic)」を選択

手順4:トークンの設定を行う

ここが重要なポイントです。慎重に設定しましょう。

Note(メモ)
トークンの用途を分かりやすく記入します。後で見返した時に「これ何に使うんだっけ?」とならないようにしましょう。

例:

  • 「個人PCからのgit操作用」
  • 「CI/CDツール用」
  • 「プロジェクトAの開発用」

Expiration(有効期限)
トークンの有効期限を設定します。選択肢は:

  • 7日
  • 30日
  • 60日
  • 90日
  • カスタム(自分で期間を指定)
  • 無期限(非推奨)

おすすめの期限は?

個人利用なら90日、自動化ツールなら長めに設定してもOKです。ただし、無期限は避けましょう。期限が来たら更新するという習慣をつけることで、セキュリティが向上します。

Select scopes(スコープの選択)
ここでトークンに与える権限を選びます。必要最小限にすることが重要です。

基本的なgit操作(clone、push、pull)だけなら:

  • repo – プライベートリポジトリへのフルアクセス

これだけで十分です。repoにチェックを入れると、その配下の項目も自動的に有効になります。

その他の主なスコープ:

  • workflow – GitHub Actionsのワークフローを編集する権限
  • write:packages – パッケージのアップロード権限
  • read:org – 組織のメンバーシップ情報を読み取る権限

手順5:トークンを生成する

  1. 画面下部の「Generate token」ボタンをクリック
  2. パスワードの再入力を求められる場合があります

手順6:トークンをコピーして保存(超重要!)

生成されたトークンが画面に表示されます。例えば:

ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

🚨 超重要な注意点 🚨

このトークンは今この画面でしか表示されません。ページを離れたり、更新したりすると二度と見ることができなくなります。

必ずすぐにコピーして安全な場所に保存してください!

保存先の候補:

  • パスワード管理アプリ(1Password、LastPass、Bitwardenなど)
  • 社内の安全なパスワード管理システム
  • ローカルの暗号化された場所

もし保存し忘れてページを離れてしまったら?その場合は、そのトークンを削除して新しく作り直すしかありません。

アクセストークンを実際に使ってみよう

トークンを作成したら、実際にGit操作で使ってみましょう。

方法1:コマンドラインでの使用(基本)

git cloneやgit pushなどを実行すると、認証情報を求められます。

git clone https://github.com/ユーザー名/リポジトリ名.git

実行すると、こんな感じで入力を求められます:

Username for 'https://github.com': あなたのGitHubユーザー名
Password for 'https://あなたのGitHubユーザー名@github.com':

Usernameには:GitHubのユーザー名を入力
Passwordには:アクセストークンを貼り付け

そうです、「Password」と表示されますが、ここにはパスワードではなく、先ほどコピーしたアクセストークンを入力します。

方法2:URLに直接埋め込む方法

トークンをURLに直接含める方法もあります。

git clone https://トークン@github.com/ユーザー名/リポジトリ名.git

実際の例:

git clone https://ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/yamada/myproject.git

この方法なら認証情報の入力を求められません。

ただし、コマンド履歴にトークンが残ってしまうので、共有PCや記録が残る環境では使わない方が安全です。

方法3:既存のリモートURLを更新する

すでにクローン済みのリポジトリで、リモートURLにトークンを含める場合:

git remote set-url origin https://トークン@github.com/ユーザー名/リポジトリ名.git

実行例:

git remote set-url origin https://ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/yamada/myproject.git

設定後は、git pushやgit pullで認証情報を求められなくなります。

認証情報を保存して毎回の入力を省略する方法

トークンは長くて覚えられないので、毎回入力するのは大変です。Gitには認証情報を記憶する便利な機能があります。

credential helperとは?

credential helperは、Gitの認証情報を安全に保存してくれる仕組みです。一度認証すれば、次回からは自動的に使ってくれます。

方法1:cacheモード(メモリに一時保存)

認証情報をメモリ上に一時的に保存します。PCを再起動すると消えるので、セキュリティ重視の方におすすめ。

設定コマンド

git config --global credential.helper cache

デフォルトでは15分間保存されます。時間を変更したい場合:

git config --global credential.helper 'cache --timeout=3600'

これで1時間(3600秒)保存されるようになります。

トークンの有効期限に合わせた設定例

トークンの有効期限が30日なら:

  • 1日 = 86400秒
  • 30日 = 2,592,000秒
git config --global credential.helper 'cache --timeout=2592000'

方法2:storeモード(ディスクに永続保存)

認証情報をファイルに保存します。PCを再起動しても消えません。

設定コマンド

git config --global credential.helper store

実行後、次にgit操作を行った時に入力した認証情報が保存されます。

保存される場所

デフォルトでは ~/.git-credentials ファイルに保存されます。

保存場所を変更したい場合:

git config --global credential.helper 'store --file ~/.my-credentials'

⚠️ 重要な注意点

storeモードは認証情報を平文(暗号化されていない状態)でファイルに保存します。つまり、そのファイルを見れば誰でもトークンが分かってしまいます。

ファイルのパーミッションは自動的に適切に設定されますが、それでも他人がアクセスできる共有PCでは使わない方が安全です。

方法3:Windows Credential Manager(Windows推奨)

Windowsの場合、OS標準の資格情報マネージャーを使う方法が最も安全です。

git config --global credential.helper manager

または

git config --global credential.helper wincred

認証情報はWindowsの資格情報マネージャーに暗号化されて保存されます。

方法4:macOSのKeychain(Mac推奨)

macOSの場合、Keychainを使います。

git config --global credential.helper osxkeychain

認証情報はmacOSのKeychainに暗号化されて保存されます。

設定を確認する方法

現在の設定を確認するには:

git config --global --list

credential.helper の行を探してください。

保存された認証情報を削除する方法

セキュリティ上の理由で保存した認証情報を削除したい場合:

cacheモードの場合
キャッシュをクリア:

git credential-cache exit

storeモードの場合
認証情報ファイルを削除:

rm ~/.git-credentials

Windows/macOSの場合
それぞれの資格情報マネージャーから手動で削除します。

GitLab、Bitbucketでのアクセストークン

GitHubだけでなく、他のGitホスティングサービスでもアクセストークンが必要です。

GitLabのアクセストークン作成方法

GitLabでも同様の仕組みがあります。

手順

  1. GitLabにログイン
  2. 右上のプロフィールアイコン→「Preferences」
  3. 左メニューから「Access Tokens」
  4. 「Add new token」をクリック
  5. Token name、Expiration date、Scopeを設定
  6. 「Create personal access token」をクリック

主なスコープ

  • api – API全体へのアクセス
  • read_repository – リポジトリの読み取り
  • write_repository – リポジトリへの書き込み

使い方はGitHubと同じです。

Bitbucketのアクセストークン

Bitbucketでは「App passwords」という名前で同じ機能を提供しています。

手順

  1. Bitbucketにログイン
  2. プロフィールアイコン→「Personal settings」
  3. 「App passwords」をクリック
  4. 「Create app password」
  5. Label、Permissionsを設定
  6. 「Create」をクリック

アクセストークンのセキュリティベストプラクティス

アクセストークンは強力な認証手段なので、適切に管理することが重要です。

やるべきこと

1. トークンは絶対にコードに含めない

ソースコードにトークンを直接書き込むのは厳禁です。

# ❌ 絶対ダメ!
token = "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

代わりに、環境変数や設定ファイル(.gitignoreに追加)から読み込みましょう。

# ✅ 良い例
import os
token = os.environ.get('GITHUB_TOKEN')

2. 必要最小限のスコープだけを与える

「全部の権限を与えておけば安心」は間違いです。必要な権限だけを選びましょう。

  • リポジトリの読み取りだけなら → repoのreadのみ
  • パッケージの公開だけなら → write:packagesのみ

3. 定期的にトークンを更新する

有効期限を設定して、定期的に新しいトークンに更新する習慣をつけましょう。

4. 使わなくなったトークンは削除する

プロジェクトが終わったら、そのトークンは削除してください。

GitHubの場合:
Settings → Developer settings → Personal access tokens → 削除したいトークンの「Delete」

5. トークンごとに用途を明確にする

複数のプロジェクトやツールで同じトークンを使い回さないこと。用途ごとに別々のトークンを作成しましょう。

やってはいけないこと

1. トークンを他人と共有する

チームメンバーとトークンを共有するのは危険です。それぞれが自分のトークンを作成すべきです。

2. 無期限のトークンを作る

無期限トークンは便利ですが、セキュリティリスクが高いです。

3. トークンをメールやチャットで送る

トークンを平文でメールやSlackなどに貼り付けないでください。

4. 公開リポジトリにトークンを含むファイルをpushする

.git-credentialsや環境変数ファイルを誤ってpushしてしまうと、全世界にトークンが公開されてしまいます。

.gitignoreに必ず追加しましょう:

.git-credentials
.env
config.json

5. スクリーンショットにトークンを含める

ブログ記事やドキュメントを書く時、スクリーンショットにトークンが映り込まないよう注意してください。

よくあるトラブルと解決方法

アクセストークンを使っていると、いくつかの問題に遭遇することがあります。

トラブル1:「Authentication failed」エラー

症状

remote: Support for password authentication was removed on August 13, 2021.
fatal: Authentication failed for 'https://github.com/user/repo.git/'

原因

パスワードの代わりにアクセストークンを使っていない可能性があります。

解決方法

  1. アクセストークンを作成する(まだの場合)
  2. git操作時、Passwordの入力欄にトークンを入力
  3. または、credential helperを設定し直す

トラブル2:トークンが期限切れ

症状

以前は動いていたのに、突然認証エラーが出るようになった。

原因

トークンの有効期限が切れています。

解決方法

  1. GitHubのPersonal access tokens画面を確認
  2. 期限切れのトークンの横に「Expired」と表示されている
  3. 「Regenerate token」をクリックして更新
  4. 新しいトークンをコピーして保存
  5. ローカルの認証情報を更新

credential helperを使っている場合は、一度認証情報を削除してから、新しいトークンで再認証してください。

トラブル3:トークンを紛失した

症状

トークンをどこに保存したか忘れてしまった。

解決方法

残念ながら、トークンを再表示する方法はありません。以下の手順で対処してください:

  1. GitHubのPersonal access tokens画面を開く
  2. 古いトークンを削除
  3. 新しいトークンを作成
  4. 今度は確実に保存(パスワード管理アプリ推奨)

トラブル4:権限不足エラー

症状

remote: Permission to user/repo.git denied to user.
fatal: unable to access 'https://github.com/user/repo.git/': The requested URL returned error: 403

原因

トークンに必要なスコープが設定されていません。

解決方法

  1. GitHubのトークン設定画面を開く
  2. 該当するトークンをクリック
  3. 必要なスコープにチェックを入れる
  4. 「Update token」をクリック
  5. 新しいトークンが表示されるのでコピー
  6. ローカルの認証情報を更新

トラブル5:組織のリポジトリにアクセスできない

症状

個人リポジトリは問題ないが、組織のリポジトリで認証エラーが出る。

原因

組織によっては、アクセストークンの使用を制限している場合があります。

解決方法

  1. 組織の管理者に確認
  2. 必要に応じて、Fine-grained tokenを使用
  3. 組織の設定で、あなたのトークンを承認してもらう

まとめ:安全で便利なGit操作のために

アクセストークンは最初は面倒に感じるかもしれませんが、一度設定すれば安全で便利に使えます。

この記事の重要ポイント

  • GitHubは2021年8月からパスワード認証を廃止
  • アクセストークンは用途を限定した「安全なパスワード」
  • トークンは作成時に一度しか表示されないので必ず保存
  • 必要最小限のスコープだけを設定しよう
  • credential helperで認証情報を保存すれば毎回の入力不要
  • 定期的にトークンを更新してセキュリティを保とう

最初の一歩

まだアクセストークンを設定していない方は、今すぐ以下を試してみましょう:

  1. GitHubでアクセストークンを1つ作成(有効期限90日、repoスコープ)
  2. パスワード管理アプリに保存
  3. git操作で使ってみる
  4. credential helperを設定して保存

これだけで、安全で快適なGit操作ができるようになります。

セキュリティと利便性を両立させて、楽しいコーディングライフを送りましょう!

コメント

タイトルとURLをコピーしました