【GitHubよもやま話】GitHubへのアクセスをパーソナルアクセストークン方式にお引越しさせてみた


2021/07/29
蛸壺の技術ブログ|GitHubへのアクセスをパーソナルアクセストークン方式にお引越しさせてみた

先日ふと仕事用で利用しているDebian LinuxパソコンでGitHubに修正済のコードをpullしたら以下のような症状でアクセス拒否されました。

            
            $ git pull origin main
remote: Password authentication is temporarily disabled as part of a brownout. Please use a personal access token instead.
remote: Please see https://github.blog/2020-07-30-token-authentication-requirements-for-api-and-git-operations/ for more information.
fatal: unable to access 'https://github.com/**********/**************.git/': The requested URL returned error: 403
        
確かにそういえば去年の暮れ頃からメールでもアナウンスされていた内容|Token authentication requirements for API and Git operationsをすっかり忘れていたのですが、この記事のタイムラインにあるMid-2021 – Personal access or OAuth tokens will be required for all authenticated Git operations.の話がいよいよこのパソコンでも火を噴いたようです。

つまりGitコマンド操作全般に関して、従来のパスワード方式は利用不可となり、2021年中盤以降からはパーソナルアクセストークンかOAuthトークンによるアクセスが必須となります。

若干面倒ですが、セキュリティの面で優れている方式に移行せざるをえないことは明白でしたので、今回はパーソナルアクセストークン方式のgithub認証にお引っ越しする手順を確認しておきます。


パーソナルアクセストークンの発行

パーソナルアクセストークンを生成するにはGitHubのダッシュボードから作業を行う必要があります。

まずはユーザーメニューから
[Settings] > [Developer settings] > [Personal access tokens]と辿ることでパーソナルアクセストークンのページに進みます。

合同会社タコスキングダム|蛸壺の技術ブログ

新しいトークンを生成するには
[Generate new token]ボタンをクリックします。

合同会社タコスキングダム|蛸壺の技術ブログ

すると新規作成するトークンの設定画面が表示されますので順次設定していきます。

有効期限切れの選択肢の中に1年間がないので、
Customからカレンダーピッカーを利用して1年後の日付を設定します。(もちろん1年よりもっと短くしたり、有効期限切れなしにもできるのでお好みで調整してください。)

合同会社タコスキングダム|蛸壺の技術ブログ

次に
アクセストークンの権限スコープを選択します。

合同会社タコスキングダム|蛸壺の技術ブログ

個人的にgithubをどう操作したいかにもよりますが、著者の場合、CLIからレポジトリを操作したいので
repo、AWS CodeBuildのようなIaCツールを利用してgithubアクセスする必要がある場合、admin:repo_hook、後はdelete_repoなども追加しておくと良いでしょう。

認証トークンを選択したら
[Generate token]を押すと完了です。

合同会社タコスキングダム|蛸壺の技術ブログ

これでパーソナルアクセストークンが完成しました。

合同会社タコスキングダム|蛸壺の技術ブログ

これを何処かに控えておきまして、早速このトークンを使ってアクセス拒否されたレポジトリを再構成していきましょう。


gitコマンドで再認証作業

gitを利用している環境がmacOSの場合にはまずキーチェーンからの認証情報を更新する必要がありますが、Linuxではクレデンシャルヘルパーを以下のコマンドでリフレッシュすることでgithubの古いキャッシュが消去できます。

            
            $ git config --global --unset credential.helper
        
あとは通常のgitコマンドの操作で新しいパスワードが聞かれますので、控えていたパーソナルアクセストークンを使ってログインします。

            
            $ git clone https://github.com/************/**********.git
Cloning into '***************'...
Username for 'https://github.com': [ユーザー名]
Password for 'https://ユーザー@github.com': [パーソナルアクセストークン]
        
なお、通常はgitコマンドをターミナルで叩いてから、このクレデンシャルをgitに覚えさせるためにgit config credential.helper store等を使ってローカルに保存する方法が従来の定石と思ってましたが、これをVS Codeの統合ターミナルでやってみると、以下のようなVSCode-GitHub提携ページに飛ばされるようになっています。

合同会社タコスキングダム|蛸壺の技術ブログ

これでボタンをいくつかポチポチするだけで、gitコマンドが利用できているので、VSCodeがどこかにクレデンシャルを保存してくれたのかな?

ひとまずはパーソナルアクセストークン方式にお引越し完了しました。とりあえず次のトークンの有効期限が切れるまでは一安心です。


参考サイト

Token authentication requirements for API and Git operations

個人アクセストークンを使用する

記事を書いた人

記事の担当:taconocat

ナンデモ系エンジニア

主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。