如何诊断Jenkins代理jnlp连接403被禁止

hfwmuf9z  于 2022-10-06  发布在  Jenkins
关注(0)|答案(1)|浏览(431)

我们在Windows上的一些Jenkins代理通过-jnlpCredentials连接:

<arguments>-Xrs -Xms256m -Xmx2048m -jar "%BASE%agent.jar" -noCertificateCheck 
  -jnlpUrl https://our-ciserver.org/jenkins/computer/bla/slave-agent.jnlp 
  -jnlpCredentials thejnlpuser:thesecret</arguments>

这曾经工作得很好,但最近重启这样的从机时,它不能再连接,报告:

Failing to obtain https://our-ciserver.org/jenkins/computer/bla/slave-agent.jnlp
java.io.IOException: Failed to load https://our-ciserver.org/jenkins/computer/bla/slave-agent.jnlp: 403 Forbidden
    at hudson.remoting.Launcher.parseJnlpArguments(Launcher.java:499)
    at hudson.remoting.Launcher.run(Launcher.java:325)
    at hudson.remoting.Launcher.main(Launcher.java:283)
Waiting 10 seconds before retry

用户thejnlpuser是注册的Jenkins用户,我可以以该用户的身份交互登录。身份验证通过Active Directory插件进行。

现在,很明显,当Jenkins验证此访问权限时,有些东西不起作用--但我如何才能找出是什么??

我尝试在/jenkins/log记录器中摆弄系统记录器,添加了hudson.plugins.active_directory的记录和其他一些尝试和错误。

但我如何才能让Jenkins报告这里到底出了什么问题呢?

  • 如何找到相关的记录器?
  • 如何找到相关的日志记录级别?
2eafrhcq

2eafrhcq1#

此处列出的错误是403 Forbidden而不是401 Unauthorized--因此寻找可能的AD/权限问题可能不会导致解决方案。

诊断JNLP错误后,应该继续使用给定的凭据查询Actualjnlp文件URL,而不仅仅是尝试登录:

这导致了解决方案:用户一切都很好,除了它的代理权限在Jenkins设置的权限矩阵中已被撤销,因此浏览jnlp文件会立即获得403禁用状态,其中包含一个非常有帮助的页面内容,告诉该用户没有获得jnlp文件的代理权限。

要查询jnlp文件,用户需要以下权限:

  • 代理:连接
  • 代理:断开连接(可能;无论如何我们都会设置)
  • 总体:阅读(可能;无论如何我们都设置了这个)

因此,步骤如下:

  • 在浏览器中打开带有实际凭据的实际URL。
  • 检查用户权限
  • 不用担心系统日志

相关问题