「個人開発ではGitHubを使い、仕事ではAWS CodeCommitを使う」という状態。

そんな時、いざ仕事のリポジトリを git clone しようとして、こんなエラーに遭遇したことはありませんか?

Cloning into 'repository-name'...
fatal: Authentication failed for '[https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/](https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/)...'

しかも、エラーログを見ると askpass-main.js401 Unauthorized といった不穏な文字が並んでいる…。

今回は、「個人開発で使っている GitHub の認証設定(~/.git-credentials)を壊さずに、AWS CodeCommit だけを正しく連携させる方法」を解説します。

スポンサーリンク

1. なぜエラーが起きるのか?

原因は、Gitのパスワード管理を担当する「認証ヘルパー(Credential Helper)」のバッティングです。

多くの個人開発者は、GitHubのパスワード入力を省略するために、以下のような設定を使っています。

git config --global credential.helper store

この設定(store)は、「すべてのサイトのパスワードを ~/.git-credentials というメモ帳に保存し、それを使い回す」というルールです。

しかし、AWS CodeCommitは非常にセキュリティが厳しく、「普通のパスワード」ではなく「AWS CLIが発行する一時的な通行証」を求めてきます。

ここで衝突が起きます。

  1. Git: 「AWSにアクセスしたいな。パスワード教えて!」
  2. storeヘルパー: 「僕のメモ帳(~/.git-credentials)にはAWSのことは書いてないよ(またはGitHubの古い情報しかないよ)」
  3. AWS: 「そんな古い・不正確な情報では通せません! 401(拒否)!」

これがエラーの正体です。

2. やってはいけない解決策

ネットで調べると「~/.git-credentials を消せばいい」という記事が出てくることがありますが、それはNGです。

それをやってしまうと、せっかく設定した個人開発(GitHub)の自動ログイン設定まで消えてしまい、プライベートのリポジトリを触るたびにパスワードを聞かれるようになってしまいます。

スポンサーリンク

3. 正解は「ドメインごとに担当者(ヘルパー)を分ける」こと

一番スマートな解決策は、Gitに対して「GitHubのときはいつものメモ帳を、AWSのときだけはAWS専用のツールを使ってね」と、住所(URL)ごとに指示を出すことです。

ターミナルで以下のコマンドを実行しましょう。

手順1:AWS専用のルールを追加する

# 「amazonaws.com」という住所の時だけ、AWS専用のヘルパーを呼ぶように設定
git config --global credential.[https://git-codecommit.ap-northeast-1.amazonaws.com.helper](https://git-codecommit.ap-northeast-1.amazonaws.com.helper) '!aws codecommit credential-helper $@'
git config --global credential.[https://git-codecommit.ap-northeast-1.amazonaws.com.useHttpPath](https://git-codecommit.ap-northeast-1.amazonaws.com.useHttpPath) true

手順2:設定が正しく反映されたか確認する

git config --global --list | grep credential

出力結果のイメージ:

credential.helper=store  <-- (GitHub用:今まで通り残っててOK)
credential.[https://git-codecommit.ap-northeast-1.amazonaws.com.helper](https://git-codecommit.ap-northeast-1.amazonaws.com.helper)=!aws codecommit credential-helper $@
credential.[https://git-codecommit.ap-northeast-1.amazonaws.com.usehttppath](https://git-codecommit.ap-northeast-1.amazonaws.com.usehttppath)=true

このように、「特定のURLの場合のルール」が追加されていれば成功です。

4. これで何が変わったのか?

この設定によって、あなたのPCのGitは以下のように賢く振る舞うようになります。

  • GitHubにアクセスする時:「URLがAWSじゃないから、いつもの store(メモ帳)を使ってログインしよう。」👉 プライベートの開発は今まで通り快適!
  • CodeCommitにアクセスする時:「あ、URLが amazonaws.com だ。ルール通り、AWS専用ツールを使って『最新の通行証』をもらってこよう。」👉 仕事のクローンやプッシュも成功!

まさに「情報の分離」「安全な共存」が実現できたわけです。

まとめ:環境の「引っ越し」ではなく「増築」を

新しい仕事が始まってツールが増えても、これまでの自分の開発環境を壊す必要はありません。

Gitの credential.helper をURL単位で使い分けるテクニックは、GitHub、GitLab、AWS、Azureなど、複数の環境を使い分けるプロのエンジニアにとって必須の知識です。

一度設定してしまえば、あとは意識することなくスムーズに開発に集中できるようになりますよ!


この記事が気に入ったら『目黒で働く分析担当の作業メモ』ご支援をお願いします!

※OFUSEに飛びます


おすすめの記事