NTLM 代理认证需要握手,并非只附上一次用户名。修改账户密码前,先确认代理确实提供 NTLM 认证,且所用 curl 可执行文件支持它。

curl --version

查看实际执行请求的可执行文件所列出的功能。另一份已安装的 curl、容器镜像或操作系统构建可能支持不同的认证方式。

选择专用于代理的认证方法

curl --proxy http://proxy.example:3128 --proxy-ntlm --proxy-user 'EXAMPLE\alice' --noproxy '' --connect-timeout 5 --max-time 20 https://example.com/

端点、域和用户名均为示例。请使用管理员提供的格式。参数中不包含密码时,curl 可以提示输入,避免把秘密留在显示的命令中。

初始认证质询可能是协商的一部分。应将其与完成握手后仍被拒绝的情况区分开。不要使用面向源站的 NTLM 选项来回答代理的认证质询。

排查时也要考虑连接行为

NTLM 的状态以连接为作用域。握手必须沿预期连接路径完成;在各阶段之间反复更换连接,可能使握手无法完成。

应用使用 libcurl 时,应让库管理认证和连接复用。不要构建把不同身份已认证连接视为可互换资源的通用连接池。若涉及多跳或中间服务,检查它是否保留所需的连接安排。

如果功能支持和方法选择都正确,继续检查账户格式、域策略,以及服务器上已脱敏的认证日志。在任何质询出现前超时,仍属于可达性问题,不能证明 NTLM 密码错误。

详细跟踪可能包含认证令牌和内部名称。请在本地使用,并在分享前脱敏;公开错误报告不需要原始令牌交互。

相关文章