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

通过SSH连接本地Jenkins服务器获取bash权限报错如何解决

结论

你的需求是可实现的,报错shell request failed on channel 0是因为Jenkins内置SSH服务的鉴权逻辑和默认调用规则和普通SSH服务不同,按以下步骤配置即可:

1 确认基础配置生效

  • 检查Jenkins SSH服务已正确开启:进入「Manage Jenkins」→「Security」→「SSH Server」页,确认端口配置为23,且配置保存后已重启Jenkins实例,端口正常监听。
  • 确认本地可以正常访问Jenkins 8080端口,没有防火墙规则拦截23端口的本地请求。

2 配置用户鉴权信息

Jenkins内置SSH服务仅支持基于用户公钥的鉴权,不支持系统用户账号密码登录,需按以下配置:

  • 本地未生成过SSH密钥对的话,执行ssh-keygen -t ed25519,全程按回车使用默认配置即可。
  • 进入Jenkins对应用户的配置页:点击右上角用户名→「Configure」,找到「SSH Public Keys」输入框,将本地~/.ssh/id_ed25519.pub文件的全部内容粘贴进去,保存配置。

3 正确执行SSH连接命令

Jenkins默认不会直接返回交互shell,需要在SSH命令中指定Jenkins用户名、强制分配伪终端、明确调用bash命令,正确命令如下:

ssh -t <你的Jenkins登录用户名>@127.0.0.1 -p 23 bash

你之前的命令没有指定Jenkins用户名,会默认用本地系统用户名去匹配Jenkins用户,匹配失败就会触发shell请求失败的报错。

额外说明

之前jenkins-cli.jar仅返回有限命令的问题,是因为当前登录的Jenkins用户权限不足,给该用户分配「Overall/Administer」全局权限后即可看到完整命令列表。
你通过该方式获取的bash环境,就是Jenkins运行用户的系统环境,和实际构建任务的运行环境一致,可直接用于构建脚本测试。如果需要模拟特定构建节点的环境,可在上述bash中执行node <节点名>命令切换到对应节点环境。

内容的提问来源于stack exchange,提问作者Mu'men Tayyem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:45:03