2要素認証設定後のgitコマンドの認証について

背景

セキュリティの観点からGitHubでもMFAを利用しようと思い設定してみました。

設定方法についてはこちらを参考にしてスムーズに行うことができました。

サインアウト→サインインもできることを確認して、VSCodeからgit pullしようとしたところ、エラーが発生しました。

1
2
3
$ git pull
remote: Repository not found.
fatal: repository 'https://github.com/organization/repository' not found

同じようなことがなんども起こりそうなのでメモしておきます。

personal access tokenを取得する

こちらに記載があるように、コマンドラインの認証にはパスワードではなくPersonal access tokenが必要でした。まずはこちらを取得します。

先ほどのドキュメントのようにコマンドラインからリポジトリにアクセスするための権限のみ設定します(repoにチェックを入れるだけにします)

PATが作成されるので、どこかに書き留めておきます。

personal access tokenを利用する

コマンドラインから利用できるかを試してみます。利用するにはリモートのURLがHTTPSであること、URLにユーザー名、パスワードを設定することが必要となります。

設定のために.git/configを編集します。変更されているかどうかを確認します。

1
2
$ git config remote.origin.url
https://username:personal-access-token@github.com/organization/repository.git

変更されていることを確認しました。

試しにgit pullしてみます。

1
2
$ git pull
Already up to date.

無事認証されました。

おまけ

MFAを設定後、他の人が作成してくれたPullRequestをレビューしていてApproveしようとしたところ、以下のような画面が表示されました。

なんだろうと思って調べてみると、MFAの設定をきっかけにこうなる人が多いようです。

ぼくは別のブラウザ(Vivaldi)でApproveするとうまくいきました。

まとめ

今回はpersonal access tokenの設定を行なってみました。こちらにあるように、2021年8月13日からパスワード認証がサポートされなくなります。余裕を持って対応できてよかったです。