密码更新后Jenkins无法连接Windows从节点 拉取Azure DevOps报407错误
问题定位
报错里的HTTP 407状态码含义是代理服务器要求身份验证,结合刚完成密码更新、Linux从节点构建正常、仅Windows从节点拉取Azure DevOps代码失败的特征,问题根因是Windows从节点侧的代理相关认证信息没有同步更新为新密码,和Jenkins主服务、Azure DevOps仓库权限无关。
排查与解决步骤
- 优先核对Git层代理配置
登录出问题的Windows从节点,注意必须切换到Jenkins从节点服务实际运行的用户(不要用自己的日常登录账号排查,很多人卡在这里——如果从节点服务跑的是SYSTEM账号或专用构建账号,改自己账号的配置完全不生效),打开PowerShell执行以下命令查看Git是否配置了独立代理:
如果命令返回了代理地址,说明Git层单独配置了代理,把地址里携带的旧密码替换为新更新的密码即可;如果暂时找不到配置入口,可以先执行命令清空Git层代理做连通性测试:git config --global http.proxy git config --system http.proxygit config --global --unset http.proxy git config --system --unset http.proxy - 检查Windows系统凭据存储
打开控制面板-用户账户-凭据管理器-Windows凭据,筛选和公司代理地址、Azure DevOps域名相关的凭据条目,查看条目里存储的密码是否为更新前的旧值,直接编辑替换为新密码即可;也可以直接删除对应旧条目,下次触发代码拉取时系统会要求重新输入认证信息,填入新密码就能正常访问。
同样注意:如果Jenkins从节点服务用的是独立运行账号,需要切换到对应用户下打开凭据管理器修改,不要改当前登录用户的凭据。 - 核对Jenkins节点侧的代理配置
进入Jenkins主节点的节点管理页面,找到对应Windows从节点的配置页,检查是否单独给该节点配置了全局代理,是否在节点环境变量里写死了携带旧密码的HTTP_PROXY/HTTPS_PROXY变量。如果有这类配置,直接更新为新密码即可,也可以把Azure DevOps的域名加入代理绕过列表,测试不走代理是否能正常连通仓库。 - 做最小粒度连通性验证
不要每次改完就跑全量构建任务,直接在从节点上用Jenkins构建任务的运行账号执行以下命令测试代码拉取能力:
命令能正常返回仓库分支哈希值就说明配置修复完成,再触发构建任务就不会再报407错误。如果手动执行命令正常、只有Jenkins任务跑的时候报错,再去检查Jenkins任务里是否写死了带旧密码的代理参数、是否引用了存储旧密码的全局凭据项。git ls-remote <你的Azure DevOps仓库地址>
内容的提问来源于stack exchange,提问作者Kivi
相关产品推荐
相关产品推荐

