jenkins 连接远程服务器报错 ERROR: Exception when publishing, exception message [Permission denied]

文章描述了一次使用JenkinsPipeline进行项目部署时遇到的问题,即在尝试将文件推送到目标服务器的back目录时失败。经过排查,发现是由于文件权限和用户权限导致的,具体是创建back目录的用户并非用于SSH连接的op用户,因此op用户无权写入。解决方案是删除并由op用户重新创建back目录,或者修改文件权限。最终,问题得到解决,文件成功推送到服务器并能继续执行后续的jar启动命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先讲下我这边情况,采用jenkins pipeline(流水线)模式进行部署项目,他的好处是可以自定义构建部署每一环节内容,比如一些定制化需求就可以通过pipeline的形式进行展示,如下图

 在其中部署开发环境这个节点报错了,连接服务器失败,而整体流水线又没有标红(上图幻色那条),查看服务器发现文件还是在jenkins服务器上,并没有推送到需要部署的目标服务器,查看这段日志信息,发现连接远程服务器中断了,没有往下执行。

 由于没有详细日志说明,一点点尝试,然后开始排查问题,首先检测Jenkins设置ssh是否正常,并没有问题。

 之后Jenkins服务器上通过SCP命令将部署文件直接上传目标服务器看是否成功,然后果然失败了没有连接服务器提示Cannot count remote files: there is no such file or directory,提示没有这个文件和目录,心想:不对呀在这个文件夹下面确实纯在back目录,而这个目录是专门存放后端jar包的地方怎么会没有。

//scp手动推送代码命令格式
//scp -r Jenkins源文件地址  用户@ip: 需要推送目的地址 
scp -r /home/op/jenkins/workspace/committee_black root@192.168.0.229:/home/op/back

再次尝试将op用户切换为root用户,一下子成功了

既然这样,同理我把Jenkins的ssh连接目标服务器用户切换为root也能成功,马上尝试了下果然如此

 事情到这,才想起来之前配置Jenkins配置ssh使用op用户,而且前端都能正常将代码推送到服务器上(上图web目录)这两者有什么不同吗,仔细观察果然发现问题,重点在于用户组和文件权限上面,由于web目前是op用户创建的,根据现有的权限规则创建该文件夹的用户才会拥有对该文件夹有写入权限。而back文件夹不是op用户创建,所以使用op用户没法将相关文件写入到back文件夹中。

 最后解决方法,直接把back文件删除,通过op用户创建back文件得以解决,也可以通过修改back文件权限使得op用户拥有该文件写入权限。

最终结果,如下图,目前服务器已经获取文件,可以接着写后面启动jar的命令了

 

 

### 解析 Jenkins 部署错误 `Exec exit status not zero. Status [127]` 当遇到 Jenkins 报错 `Exec exit status not zero. Status [127]` 时,这通常意味着命令未找到。此状态码表明 shell 尝试执行不存在的命令或路径不正确[^1]。 #### 可能的原因 - 脚本中指定的命令不在系统的 PATH 环境变量内。 - 使用了相对路径而该路径在运行环境中不可访问。 - 执行权限不足,导致无法启动脚本或程序。 #### 解决方案 为了修复这个问题,可以采取以下措施: ##### 修改环境配置 确保所有必要的工具已安装并位于系统的 PATH 中。可以通过更新 `.bashrc`, `.zshrc` 或其他相应的初始化文件来设置 PATH。 ##### 检查绝对路径 如果使用特定路径调用命令,则应验证这些路径对于构建节点来说是有效的。考虑切换成绝对路径而非相对路径以减少不确定性。 ##### 设置可执行权限 确认目标脚本具有适当的读取和执行权限。可以在部署之前通过如下命令赋予相应权限: ```shell chmod +x /path/to/your/script.sh ``` ##### 审核脚本内容 有时脚本内部可能存在拼写错误或其他语法问题,特别是当从不同平台移植过来的时候。建议按照以下方法清理潜在的非法字符: 打开终端进入 `deploy.sh` 文件所在目录后输入命令编辑文件 `vi deploy.sh` 。将原始内容保存至纯文本文件再重新粘贴回去能够有效去除隐藏字符[^2]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值