Jenkins CLI认证报错解决:弃用--username参数后如何用SSH或API密钥认证
你遇到的"--username" is not a valid option报错是因为Jenkins 2.277及以上版本已正式移除旧的--username、--password认证参数,你可以通过API令牌或SSH密钥两种方式完成jenkins-cli的身份认证,具体操作流程如下:
方式一:API令牌认证(官方推荐首选)
- 生成API令牌:登录Jenkins网页端,点击右上角用户名进入「个人设置」页面,找到「API令牌」板块,点击「添加新令牌」,自定义备注后生成令牌,生成后请立即复制保存,关闭页面后无法二次查看
- 执行cli命令时使用
-auth参数传入认证信息,命令格式如下:java -jar jenkins-cli.jar -s <Jenkins服务访问地址> -auth <用户名>:<API令牌> <待执行的cli命令> - 示例命令(查看所有任务列表):
java -jar jenkins-cli.jar -s http://192.168.3.20:8080 -auth admin:1a2b3c4d5e6f7g8h9i0j list-jobs
方式二:SSH密钥认证
- 本地生成SSH密钥对,执行命令:
ssh-keygen -t ed25519 -C "jenkins-cli-auth"
无需设置密码的话全程回车即可,生成的公钥默认保存在~/.ssh/id_ed25519.pub路径 - 配置公钥到Jenkins:登录Jenkins网页端进入「个人设置」页面,找到「SSH公钥」板块,把本地公钥文件的全部内容粘贴到输入框后保存
- 确认Jenkins SSH端口:进入Jenkins全局安全设置页面,找到「SSH服务器」板块,设置固定端口(如2222)后保存配置
- 执行cli命令,两种可选格式:
- 直接通过SSH命令执行:
ssh -l <用户名> -p <Jenkins SSH端口> <Jenkins服务IP/域名> <待执行的cli命令> - 通过jenkins-cli.jar调用SSH方式执行:
java -jar jenkins-cli.jar -s <Jenkins服务访问地址> -ssh -user <用户名> <待执行的cli命令>
- 直接通过SSH命令执行:
- 补充说明:如果本地私钥不在默认路径,需要添加
-i参数指定私钥路径,示例:ssh -i /data/ssh/jenkins_key -l admin -p 2222 192.168.3.20 list-jobs
内容的提问来源于stack exchange,提问作者Tommy Gordon
相关产品推荐
相关产品推荐

