search
LoginSignup
9

posted at

updated at

gitで2要素認証を突破するためのGit Credential Manager Coreの紹介

はじめに

GitHubで2要素認証を設定した上で, gitpush などをするためには,
アクセストークンを払い出すか, SSHの公開鍵を登録するか, が必要です.
しかし, 自分が手動で登録・管理しなければならない認証情報が増えて, 面倒ですし,
せっかく2要素認証を設定したのに, セキュリティが微妙になる感じがします.

そこで, Microsoftが開発している, Git Credential Manager (GCM) Coreを使うと,
手動での認証情報の登録不要 (OAuth) で, 2要素認証に対応できます.
GitHub のほか, BitbucketAzure DevOps にも対応しています.

GCM CoreはGit for Windowsではデフォルトで使えますが,
MacやLinuxではhomebrewでインストールします.

インストールしてみる

まず認証管理の初期設定を下記のように確認してみます.
(自分のMacでは, キーチェーンを使う設定となってました.)

出力例
$ git config --show-origin credential.helper
file:/usr/local/etc/gitconfig   osxkeychain

ここで, homebrewで下記のようにインストールします.

$ brew tap microsoft/git
$ brew install --cask git-credential-manager-core

インストール完了後に再度確認すると, 下記のようにcredential-manager-coreを使用するようになっています.
(~/.gitconfig には, 設定が自動で追加されます. )

出力例
$ git config --show-origin credential.helper
file:/Users/skkzsh/.gitconfig   /usr/local/share/gcm-core/git-credential-manager-core

$ git credential-manager-core --version
2.0.498+7ad55fb809

$ tail ~/.gitconfig

[credential]
    helper =
    helper = /usr/local/share/gcm-core/git-credential-manager-core
[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 Big Sur (11.5.2)
  • Git 2.32.0
  • Git Credential Manager Core 2.0.498

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
9