You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins 2.89.2:不授予Anonymous权限时如何正常使用Jenkins CLI

解决Jenkins 2.89.2 CLI无匿名权限下的任务触发问题

我明白你的困扰——升级Jenkins后,CLI触发任务必须给Anonymous开权限太不安全了,其实不用这么做,咱们从用户权限配置和CLI认证方式两个方向就能搞定,具体步骤如下:

1. 先搞定SSH密钥用户的权限配置

你之前遇到ERROR: No such job 'testing',本质是你添加SSH公钥的那个用户(比如jen)没有权限看到这个任务,更别说构建了。先在RBAC策略里给这个用户分配正确的权限:

  • 进入Jenkins的Manage Jenkins > Manage and Assign Roles
  • 找到你要用于CLI的用户(比如jen),给它分配包含以下权限的角色:
    • Job > Read:必须有,不然用户看不到任务,CLI就会报任务不存在
    • Job > Build:允许用户触发任务构建
    • 可选:Overall > Read:确保用户能访问Jenkins的基础资源,避免其他权限障碍
  • 保存配置后,先用这个用户登录Jenkins Web UI,手动去testing任务页面试试能不能构建——如果Web端能正常操作,说明权限没问题了。

2. 正确使用CLI的SSH认证方式

你之前的命令可能没明确指定用户名,导致CLI还是尝试用Anonymous身份访问,所以即使有SSH密钥也没用。推荐两种可靠的方式:

方式一:用jenkins-cli.jar + 明确指定用户名

在命令里加上--username参数,告诉CLI用哪个用户身份认证:

java -jar jenkins-cli.jar -s http://<servername>:<port>/ -i /user/jen/.ssh/id_rsa --username jen build "testing"

执行这个命令时,如果你密钥有密码,会提示你输入;如果是无密码密钥,直接就能触发构建。

方式二:启用Jenkins SSH服务器(更简洁)

Jenkins自带SSH服务器功能,开启后可以直接用系统的ssh命令触发,不用依赖jar包:

  1. 进入Manage Jenkins > Configure Global Security,找到SSH Server板块
  2. 勾选「Enable SSH Server」,设置一个端口(比如默认的2222,注意不要和系统SSH端口冲突),保存配置
  3. 用以下命令触发构建:
ssh -p 2222 jen@<servername> build "testing"

这个方式更直接,因为ssh命令会自动用你的本地密钥认证,只要服务器端已经添加了该用户的公钥,就能正常执行。

为什么之前的尝试失败?

  • 当你没给用户加Job > Read权限时,CLI用该用户身份访问时看不到testing任务,所以报No such job 'testing'
  • 给Anonymous加Read权限后,CLI默认还是用Anonymous身份访问(因为没指定用户),而Anonymous没有Build权限,所以报anonymous is missing the Job/Build permission

这样调整后,完全不需要给Anonymous用户开任何敏感权限,就能用指定用户的SSH密钥通过CLI触发任务了。

内容的提问来源于stack exchange,提问作者SoDa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:46:13