Lesstep
Azure DevOps Server・TFS・HTTPS の Git・2026年11月2日に確認

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 には資格情報がそのまま入るので、読んだら消します。

根本の直し方

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日間の無料試用つき)です。画面は日本語です。

JetBrains Marketplace で入れる

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