Git の「NTLM authentication has been disabled in Git by default」と Azure DevOps Server
2026年3月から、Git for Windows は設定しない限り NTLM に答えません。NTLM が弱い認証だからです。Windows 認証でサインインさせる Azure DevOps Server や TFS は NTLM を使っていることが多く、HTTPS の git fetch・pull・push・clone がこの警告で失敗します。今はサーバーごとに NTLM を戻せますが、長くは続きません。curl は2026年12月9日予定の 8.24.0 で NTLM を削除し、その curl で作られた Git for Windows には戻す道がありません。根本の直し方は Kerberos か SSH です。
メッセージの全体
2026年11月2日に Git 2.53.0.windows.2 が出した文です。相手は、IIS の Windows 認証と同じように NTLM を求める、こちらのパソコン上の試験用サーバーです(試験用サーバーのアドレスは例に置き換えました)。
warning: Due to its cryptographic weaknesses, NTLM authentication has been disabled in Git by default. You can re-enable it for trusted servers by running: git config set http.https://tfs.example.com.allowNTLMAuth true fatal: Authentication failed for 'https://tfs.example.com/DefaultCollection/Project/_git/repo/'
訳:暗号としての弱さのため、Git では NTLM 認証が既定で無効になっています。信頼できるサーバーには、次のコマンドで有効に戻せます。
サーバーが Negotiate と NTLM の両方を出したとき(IIS の既定)も同じでした。この変更についての Microsoft の記事(Upcoming change: NTLM removal in Git (libcurl)・2026年7月1日・英語)も、最初のしるしとしてこの警告を挙げています。
日程
| いつ | 何が変わったか |
|---|---|
| Git for Windows 2.53.0(2)・2026年3月10日 | NTLM が既定で無効に(CVE-2025-66413)。設定 http.allowNTLMAuth で戻せる。 |
| Git for Windows 2.54.0・2026年4月20日 | Kerberos が使えないときの、Negotiate の中の NTLM への切り替えも無効に。 |
| Git for Windows 2.55.0・2026年6月29日 | NTLM を戻す設定が効かなくなり、7月2日の 2.55.0(2) で「一時的に」戻った。 |
| curl 8.24.0・2026年12月9日の予定 | curl から NTLM を削除(curl の廃止の一覧・リリースの予定日)。Git for Windows のリリースノートは、そこを「NTLM が無効になり、戻す設定もできなくなる」時点と書いています。 |
いちばん新しい Git for Windows 2.56.0(4)(2026年10月26日)は curl 8.23.0 なので、まだ設定で戻せます(リリースノート)。Microsoft の記事は削除を2026年9月と見込んでいましたが、curl の一覧では今は 8.24.0 です。http.allowNTLMAuth は Git for Windows の設定です。Linux と macOS の Git はシステムの curl を使い、curl 8.20.0 から NTLM は、作るときに有効にしない限り入らないものになっています。
当面、1台のサーバーだけ戻す
警告のコマンドには --global がありません。リポジトリの中で打つと、そのリポジトリだけが変わります。リポジトリの外、つまり git clone の前に打つと、fatal: not in a git directory で止まります(こちらで確認)。そのサーバーのすべてのリポジトリに効かせるには:
git config set --global http.https://tfs.example.com.allowNTLMAuth true
1回の clone だけなら:
git -c http.https://tfs.example.com.allowNTLMAuth=true clone https://tfs.example.com/DefaultCollection/Project/_git/repo
この設定は、そのホストのどのパスにも効きます。効いているかは git config --get-urlmatch http.allowNTLMAuth <リポジトリの URL> で分かります。2.46 より前の Git には git config set が無いので、git config --global http.https://tfs.example.com.allowNTLMAuth true と書きます。Microsoft は、これに頼り続けないこと、NTLM のために古い Git を使い続けないことを求めています。
NTLM か Kerberos か
つながっていても、どちらを使っているかは分かりません。Negotiate は、Kerberos が取れないと NTLM に切り替わるからです。Microsoft の2つの確かめ方を、PowerShell で書きます。
klist purge git fetch klist
HTTP/ とサーバー名のチケットがあれば Kerberos です。無ければ NTLM か、認証の失敗です。
$env:GIT_TRACE_CURL = 1 $env:GIT_TRACE_REDACT = 0 git fetch 2> trace.txt
trace.txt の Authorization: の行を見ます。TlRMT で始まるトークンは、NTLM の後でも Negotiate の後でも NTLM です。こちらの試しでは、NTLM を戻した Git は、Negotiate と NTLM を出したサーバーに Authorization: Negotiate TlRMTVNTUAAB… と答えました。そのアドレスの Kerberos のチケットが無かったので、Negotiate の中身が NTLM になったわけです。trace には資格情報がそのまま入るので、読んだら消します。
根本の直し方
- Kerberos を端から端まで。Microsoft が挙げるのは、サーバーのアドレスに合ったサービス プリンシパル名(SPN)、ドメイン コントローラーに届くクライアント、IIS の設定です。DNS の別名やロード バランサーの名前など、サーバーを呼ぶ名前のどれでも Kerberos が通る必要があります。
- SSH:Kerberos を使えないパソコン(ワークグループのパソコン、ビルド エージェント、サービス アカウント)向けです。サーバーで SSH が有効なら使えます。
Microsoft の記事への読者のコメントでは、IIS の拡張保護(Extended Protection)が Required のとき、Git は Kerberos を最後まで通せなかったと報告されています。記事そのものは、この点に触れていません。
IntelliJ IDEA と Rider では
JetBrains の IDE はパソコンに入っている Git を動かすので、フェッチ・プル・プッシュは同じように失敗し、直し方も同じです。Azure DevOps Pull Requests は、Lesstep が作っている JetBrains IDE(2024.1 以降)と Android Studio のプラグインです。サーバーの REST API とは NTLM でなく個人用アクセス トークンで話すので、Git を直している間もプルリクのレビューは続けられます。対応は Azure DevOps Server 2019 以降と TFS 2018 Update 2 以降です。読むのは無料、投票・コメント・完了は Pro(月 US$1・30日間の無料試用つき)です。画面は日本語です。
Azure DevOps は Microsoft Corporation の商標、IntelliJ IDEA と Rider は JetBrains s.r.o. の商標です。このページは Microsoft・JetBrains・Git for Windows プロジェクト・curl プロジェクトのいずれとも提携しておらず、承認も受けていません。
ほかに:Azure DevOps Server と TFS のサポート期限 · Git Credential Manager と Azure Repos · SSH で Azure DevOps を使う · English