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

Jenkins无法通过SSH启动Slave Agent:夜间断开后无法重连

解决Jenkins SSH Slave集体断开且启动失败的问题

我之前也碰到过类似的SSH Slave突然集体挂掉的情况,结合你给出的错误日志和已做的排查(版本兼容、Slave进程无残留),给你几个针对性的排查和修复方向:

1. 排查Slave端的目录与文件权限问题

虽然之前运行正常,但系统更新、用户权限变更都可能导致权限异常:

  • 执行命令检查Jenkins Slave工作目录的权限:
    ls -ld /home/ubuntu/jenkins_slave
    
    确保运行Slave的ubuntu用户拥有该目录的读写权限。
  • 检查slave.jar文件是否存在且可读取:
    ls -l /home/ubuntu/jenkins_slave/slave.jar
    
    如果文件丢失或权限不足,重新从Master端的/var/lib/jenkins/war/WEB-INF/slave.jar路径下载一份到Slave对应目录。

2. 手动在Slave端运行Slave进程,直接捕获错误

目前你只能看到Master端的EOF异常,手动执行能直接获取Slave端的报错信息:

  1. 从Master服务器SSH登录到任意一台Slave机器
  2. 执行启动命令:
    cd /home/ubuntu/jenkins_slave && java -jar slave.jar
    
    此时如果进程报错(比如Java依赖缺失、内存不足、配置文件错误),会直接在终端输出,这是定位问题最直接的方式。

3. 检查SSH连接与网络层面的异常

  • 查看Slave端的SSH认证日志(Ubuntu系统路径为/var/log/auth.log),搜索是否有连接时的权限拒绝、连接中断等异常记录,排查是否有防火墙规则变更或SSH服务配置修改。
  • 验证Master与Slave之间的Jenkins远程通信端口(默认是50000)是否通畅:
    在Slave端执行:
    telnet <你的Master服务器IP> 50000
    
    如果无法连通,检查Master端防火墙是否开放了该端口,或者网络路由是否出现异常。

4. 排查Java运行环境与系统资源问题

  • 确认Slave端的Java环境未被篡改:执行java -version和echo $JAVA_HOME,确保确实是Java 1.7,且环境变量配置正确。
  • 检查Slave端的临时目录(/tmp)磁盘空间:
    df -h /tmp
    
    Jenkins Slave运行时需要写入临时文件,若/tmp目录满了会导致进程启动失败。

5. 尝试重启Jenkins Master服务

有时候Master端的远程连接池出现异常,会导致所有Slave无法正常建立连接。可以尝试重启Master的Jenkins服务,之后再重新启动Slave Agent。

附你提供的Master端错误日志:

[01/05/18 16:27:13] [SSH] Starting slave process: cd "/home/ubuntu/jenkins_slave" && java -jar slave.jar <===[JENKINS REMOTING CAPACITY]===>channel started
Slave JVM has not reported exit code. Is it still running?
[01/05/18 16:27:20] Launch failed - cleaning up connection
[01/05/18 16:27:20] [SSH] Connection closed.
ERROR: Connection terminated
java.io.EOFException
	at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2638)
	at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:3113)
	at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:853)
	at java.io.ObjectInputStream.<init>(ObjectInputStream.java:349)
	at hudson.remoting.ObjectInputStreamEx.<init>(ObjectInputStreamEx.java:48)
	at hudson.remoting.AbstractSynchronousByteArrayCommandTransport.read(AbstractSynchronousByteArrayCommandTransport.java:34)
	at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:59)
Caused: java.io.IOException: Unexpected termination of the channel
	at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:73)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:30:15