32
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2021-09-26

はじめに

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

そこで, Microsoftが開発している Git Credential Manager (GCM) を使うと,
手動での認証情報の登録不要 (OAuth) で, 2要素認証に対応できます.
GitHub のほか, GitLabBitbucket, 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
Sign in with you browser」をクリックすると, ブラウザにリダイレクトされます.
authz
Authorize GitCredentialManager」をクリックすると, 以下の成功画面が出ます.
authn
git push の画面に戻ってみると, 成功しているハズです.

なお, Settings」 -> 「Applications」 -> 「Authorized OAuth Apps を見ると,
Git Credential Manager」が追加されているのが確認できます.
app
以後 git を使うときは, 再び認証 (認可) を求められることはありません.
(Macだと, キーチェーンに認証情報が保存されています. )

GitHubに登録してあるアクセストークンやSSHの公開鍵は削除して大丈夫です.

参考

確認環境

  • macOS Sonoma (14.4.1)
  • CPU: M3
  • Git 2.45.0
  • Git Credential Manager 2.5.0
32
16
0

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
  3. You can use dark theme
What you can do with signing up
32
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?