はじめに
GitHubで2要素認証を設定した上で git
で push
などをするためには,
アクセストークンを払い出すか, SSHの公開鍵を登録するかが必要です.
しかし, 自分が手動で登録・管理しなければならない認証情報が増えて面倒ですし,
せっかく2要素認証を設定したのにセキュリティが微妙になる感じがします.
そこで, Microsoftが開発している Git Credential Manager (GCM) を使うと,
手動での認証情報の登録不要 (OAuth) で, 2要素認証に対応できます.
GitHub のほか, GitLab や Bitbucket, Azure DevOps にも対応しています.
GCMはGit for Windowsではデフォルトで使えますが,
MacやLinuxではhomebrewでインストールします.
インストールしてみる
まず認証管理の初期設定を下記のように確認してみます.
(自分のMacでは, キーチェーンを使う設定となっていました.)
$ git config --show-origin credential.helper
file:/opt/homebrew/etc/gitconfig osxkeychain
ここで, homebrewで下記のようにインストールします.
$ brew install git-credential-manager
インストール完了後に再度確認すると, 下記のようにcredential-manager
を使用するようになっています.
(~/.gitconfig
には, 設定が自動で追加されます. )
$ git config --show-origin credential.helper
file:/Users/skkzsh/.gitconfig /usr/local/share/gcm-core/git-credential-manager
$ git credential-manager --version
2.5.0+d34930736e131ad80e5690e5634ced1808aff3e2
$ tail ~/.gitconfig
[credential]
helper =
helper = /usr/local/share/gcm-core/git-credential-manager
[credential "https://dev.azure.com"]
useHttpPath = true
git pushのときに, GitHubの2要素認証を突破してみる
この設定で, https接続で git push
してみます.
$ git remote -v
origin https://github.com/skkzsh/gcm-test.git (fetch)
origin https://github.com/skkzsh/gcm-test.git (push)
$ git push origin
info: please complete authentication in your browser...
すると,
info: please complete authentication in your browser...
が出た上で, 以下のようなGitHubのポップアップ画面が出ます.
「Sign in with you browser」をクリックすると, ブラウザにリダイレクトされます.
「Authorize GitCredentialManager」をクリックすると, 以下の成功画面が出ます.
git push
の画面に戻ってみると, 成功しているハズです.
なお, 「Settings」 -> 「Applications」 -> 「Authorized OAuth Apps」 を見ると,
「Git Credential Manager」が追加されているのが確認できます.
以後 git
を使うときは, 再び認証 (認可) を求められることはありません.
(Macだと, キーチェーンに認証情報が保存されています. )
GitHubに登録してあるアクセストークンやSSHの公開鍵は削除して大丈夫です.
参考
確認環境
- macOS Sonoma (14.4.1)
- CPU: M3
- Git 2.45.0
- Git Credential Manager 2.5.0