我在跑詹金斯 CI在使用代理访问互联网的公司网络内。
我尝试在中配置代理详细信息插件->高级,但即使凭据是正确的(是的,我检查了很多次),它也无法验证“测试 URL”,即使在http://google.com http://google.com并返回
无法连接到http://google.com http://google.com(代码 407)。
奇怪的是,Jenkins 仍然能够自行下载插件(哇!),但完全无法连接到任何 HTTP 资源。从控制台输出的消息是:
←[0mApr 16, 2015 1:58:56 下午
org.apache.commons.httpclient.HttpMethodDirector pro
cessProxyAuthChallenge INFO:使用 NTLM @proxyrye.asg.com 进行身份验证失败:80 2015 年 4 月 16 日下午 2:09:09
org.apache.commons.httpclient.HttpMethodDirector 执行 WithRetry
信息:处理时捕获 I/O 异常 (java.net.ConnectException)
请求:连接超时:连接 2015 年 4 月 16 日下午 2:09:09
org.apache.commons.httpclient.HttpMethodDirector 执行 WithRetry
信息:重试请求 2015 年 4 月 16 日下午 2:09:10
org.apache.commons.httpclient.auth.AuthChallengeProcessor
selectAuthScheme INFO:选择了 ntlm 身份验证方案 ←[31mApr
2015 年 16 月 2:09:10 下午 org.apache.commons.httpclient.HttpMethodDirector
au thenticate 严重:凭据不能用于 NTLM
身份验证:org.apache.commons.h
ttpclient.用户名密码凭据
org.apache.commons.httpclient.auth.InvalidCredentialsException:
凭据不能用于 NTLM 身份验证:
org.apache.commons.httpclient.UsernamePasswordCredentials
在 org.apache.commons.httpclient.auth.NTLMScheme.authenticate(NTLMScheme
.java:332)
我们的 Jenkins 在我们公司的代理背后,这个问题已经存在相当长的时间了。有一天,他们更改了我们代理所需的身份验证方案的顺序。这一天我们的詹金斯停止连接到互联网。
明显地Jenkins 无法通过需要 NTLM 身份验证的代理进行连接 https://issues.jenkins-ci.org/browse/JENKINS-3350。这就是引导我的发布 Jenkins 的改进以扩展代理配置屏幕 https://issues.jenkins-ci.org/browse/JENKINS-32293。在扩展的工作过程中,我发现 Jenkins 没有使用所有与代理相关的系统属性,因此它无法与 NTLM 一起使用。
因此,代理的答案允许onlyNTLM 身份验证是:它无法通过 Jenkins UI 工作。
But如果您的代理允许其他身份验证方案,您可以按照我们的解决方法进行操作,这非常简单:添加 java 系统属性-Dhttp.auth.preference="basic"
到您的 Jenkins 启动脚本或您的容器之一。
这将强制 Jenkins 使用的底层库和 Java 机制使用基本身份验证(而不是 NTLM)连接到您的代理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)