はじめに
GitHub へのアクセスは SourceTree や cli で行うと思いますが、その際にユーザー名やパスワードの入力が非常に面倒です。
URL に PAT を指定する方法も簡単ですぐに実現できるのですが、PAT がオープンになってしまうためあまりいい感じではありませんので、 git-credential-manager-core(GCM) を使用して Mac のキーチェインや Windows 資格情報マネージャーに事前に登録するようにしたいと思います。
環境は macOS を想定していますが、インストール手順以外はほぼ同じコマンドで実行できます。
環境準備
git-credentaial-manager-core をインストールします。
インストール方法は上記のサイトにも記載されていますが以下で行えます。
brew tap microsoft/git
brew install --cask git-credential-manager-core
すでにインストール済みの場合は
brew upgrade git-credential-manager-core
でアップグレードが可能です。
GCM の初期設定
認証設定を行う前に初期設定を行います。
git credential-manager-core configure
上記によって .gitconfig などの初期設定が行われます。
macOS の場合
macOS の場合はキーチェインをデフォルトのログインキーチェインを使用するようですのでログインキーチェインを有効化しておきましょう。
security list-keychains -d user -s ~/Library/Keychains/login.keychain-db
認証情報の設定
認証情報の設定は以下のコマンドを入力することで保存することが可能です。
git credential-manager-core store << EOS
protocol=https
host=github.com
username=<ユーザー名>
password=<パスワード or PAT>
EOS
※パスワードには PAT(パーソナルアクセストークン) を指定する方がおすすめです。
上記の設定を行うことで次回以降はパスワード入力を抑制することが可能になります。
無事に保存されればキーチェインには上記のような画像ように保存されていると思います。
ちなみに Windows の場合は以下のような感じです。
Windows の場合はパスワードに PAT を指定した場合はユーザー名に『Personal Access Token』と表示されるようです。
正常に登録されているかどうかを確かめる方法は
git credential-manager-core get
protocol=https ← 入力
host=github.com ← 入力
// 空白の改行を入れる
と入力すると
protocol=https
host=github.com
username=<ユーザー名>
password=<パスワード>
という感じで表示されるはずです。
以下に上記をまとめたシェルスクリプトを記載しておきます。
#!/bin/sh
# 引数
# $1 = GitHub のアカウント名(またはメールアドレス)
# $2 = GitHub の PAT (repo, workflow, admin:repo_hook)
security list-keychains -d user -s ~/Library/Keychains/login.keychain-db
git credential-manager-core store << EOS
protocol=https
host=github.com
username=$1
password=$2
EOS
上記のコードを Store-GitHub-Credential.sh
というファイルを作成してコピペしてもらって以下のようにコマンドを叩いてもらえばよいかと。
./Store-GitHub-Credential.sh <ユーザー名> <パスワード>
さいごに
git の認証にはかなりてこずりました。
特に macOS の場合はキーチェインの知識がかなり必要なため、それを知っていないと遠回りを常にしている感じです。
まぁ、事前の知識はしっかりと持っておかないといけないということですね。