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

Jenkins通过SSH传输文件时出现Exec exit status 255错误求助

解决Jenkins SSH传输文件时Exit Status 255的问题

Exit Status 255在SSH场景下基本都是连接或执行环节出了未明确的故障,结合你贴的日志(SSH连接后很快就断开了),我整理了几个优先级最高的排查方向,一步步来:

1. 先手动验证SSH基础连通性

日志里显示“连接完成”,但这可能只是TCP握手成功,实际认证、权限可能有问题:

  • 登录到Jenkins服务器,切换到Jenkins运行的用户(一般是jenkins),执行带详细日志的SSH命令:
    ssh -v [你的server配置对应的主机] "ls /你要传输到的目标目录"
    
    看输出里有没有认证失败(比如密钥不对、密码错误)、主机密钥未被信任(首次连接需要手动确认)的提示——很多时候Jenkins用户没做过首次SSH连接,会因为主机密钥问题静默失败。
  • 如果用密钥认证,一定要确保Jenkins用户的~/.ssh/id_rsa(或你指定的密钥文件)权限是600,~/.ssh目录权限是700,SSH对密钥文件权限要求很严,权限太宽会直接拒绝使用。

2. 核对Jenkins SSH插件的配置细节

  • 先检查插件里填的主机地址、端口、用户名有没有拼写错误,别小看这种低级错误,真的很常见。
  • 如果配置了传输前后的“执行命令”,先单独在目标服务器上跑一遍这条命令,看能不能正常执行——Exit Status 255也可能是前置/后置命令执行失败导致的(比如命令不存在、用户没权限执行)。
  • 确认要传输的文件:Jenkins工作区里的构建产物是不是真的存在?目标服务器的接收目录,Jenkins SSH用户有没有写入权限?比如目标目录是/root/test,但你用的是普通用户,那肯定写不进去。

3. 排查Jenkins运行用户的权限问题

  • 很多人忽略了Jenkins是用jenkins系统用户运行的,这个用户可能没权限读取工作区的文件,或者没权限使用SSH密钥。你可以手动切换到这个用户测试:
    sudo su - jenkins
    
    然后用scp传个测试文件到目标服务器,看能不能成功——如果手动传都失败,那插件肯定也会失败。

4. 检查目标服务器的SSH配置

  • 看看目标服务器的sshd_config里有没有限制Jenkins用户登录?比如AllowUsers列表里没加这个用户,或者禁用了密码认证但你在插件里用的是密码登录。
  • 目标服务器的防火墙、SELinux会不会拦?可以临时关闭SELinux试试:
    sudo setenforce 0
    
    或者检查防火墙规则,确保Jenkins服务器的IP能访问22端口。

额外提示:关于构建标记为UNSTABLE

这个插件默认传输失败时会把设为UNSTABLE而不是FAILURE,如果你希望失败直接标记为构建失败,可以在插件配置里找到“Fail the build on error”选项勾上,这样更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:37:46