GitHubをはじめとするソースコードホスティングサービスにおいて、セキュリティー上の要請から、多要素認証を前提としてソースコードへのパスワードの認証によるアクセスを排除するのは全体的な傾向です。
2021年8月にGitHubでCLIからのパスワード認証が廃止されたのに続いて、Bitbucket Cloud(bitbucket.org)も2022年3月にAPIとhttpsでのベーシック認証でのパスワードによる認証を廃止しました。
GitレポジトリーへのCLIからのアクセスで有効な認証方法としては、パーソナルアクセストークン(PAT)や、SSHによる公開鍵認証があります。
それ以外の選択肢として、CLIからブラウザーを経由したシームレスな認証によるアクセスを提供するのが、今回紹介するGit Credential Managerです。
Git Credential Managerは、以前Git Credential Manager for Windowsとして開発され、Git for Windowsに同梱されていました。LinuxおよびmacOS向けにはGit Credential Manager for Mac and Linuxとして開発されていました。これらがクロスプラットフォームに統合されたのがGit Credential Managerです。
当初はGit Credential Manager Coreという名称で公開されていましたが、プラットフォーム間の統合が完了したことから、Gitクライアントにおけるユニバーサルな認証プラットフォームであるという意味合いを強調して、Git Credential Manager と改名されました。
Git Credential Managerの導入
Git Credential Managerは、Git for Windowsには同梱して提供されています。
macOSおよびLinux向けには、GitHubのGitCredentialManager/git-credential-manager からパッケージが提供されています。
Git Credential ManagerによるGit認証
Git Credential Managerを導入後、ターミナルからGit操作を行うと、Git Credential Managerのウィンドウが開いて、画面の指示に従いブラウザー上でサービスにログインすることで、認証を行う事ができます。
次の画像は、ターミナルからGit操作を行った際に、Git Credential Managerがログイン画面を表示している様子です。
認証の情報は、Windowsは資格情報マネージャー、macOSはキーチェーンアクセスに保存します。
VS Codeとの連携
Container
VS CodeのRemote Containerを使用している場合、ホストでGit Credential Managerを使用している場合はコンテナー内でもGit Credential Managerを使用して認証します。
参考: Developing inside a Container using Visual Studio Code Remote Development
WSL
WSL上でGitを使用する場合、次のコマンドを実行して ~/.gitconfig
に設定し、Windows上のGit Credential Managerで認証を行います。
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager-core.exe"
Git Credential Manager for Windowsの時代に設定を行っていた場合は、 Git Credential Manager Coreへの移行時にCredential Managerへのパス及び実行ファイル名が変更になっているため、再設定が必要です。
Bitbucket Cloudとの連携
Bitbucket Cloudでは、前述のベーシック認証の廃止後、Git Credential Managerでの認証時にGitクライアントの設定credential.bitbucketAuthModes
を oauth
に設定しないとGit Credential Managerでの認証ができない不具合がありましたが、Git Credential Managerの 2.0.567 で解消しています。
参考: Unable to use Bitbucket SSO · Issue #329 · GitCredentialManager/git-credential-manager · GitHub
Git Credential Managerを使用することにより、多要素認証の使用を前提として、パスワードとPATの二重管理を行わずに、ソースコードへのアクセスをセキュアに行う事ができます。Windowsプラットフォーム以外での普及はまだこれからですが、ぜひお試しください。