Jenkins配置不同子网多跳板机时SSH连接失败问题求助
Jenkins多子网跳板机SSH连接失败问题解决
环境信息
- Jenkins版本:2.401.3
- Publish Over SSH插件版本:1.25
- 子网划分:
- 子网A:192.168.10.xxx
- 子网B:192.168.7.xxx
场景对比
- 正常场景:仅配置子网A跳板机
192.168.10.120时,连接路径192.168.10.37→192.168.10.120→10.124.13.128可正常建立SSH连接 - 异常场景:同时配置子网A的
192.168.10.120和子网B的192.168.7.20时,子网B的连接路径192.168.7.196→192.168.7.20→10.124.13.128连接失败,报错信息如下:
SSH: Caught exception [Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [backup].
Message [Session.connect: java.net.SocketException: Connection reset]]]
Sleeping for [0]ms before trying again
排查与解决步骤
- 确认跳板机绑定规则
进入Jenkins后台「Manage Jenkins」→「Configure System」→「Publish over SSH」,给每个目标服务器的配置单独绑定对应的子网跳板机,避免两个子网的跳板机参数串用。比如子网B的目标主机10.124.13.128必须明确指定跳板机为192.168.7.20,不要留空或复用子网A的跳板机配置。 - 验证跳板机自身连通性
登录子网B的跳板机192.168.7.20,执行ssh 10.124.13.128确认能直接连接目标主机;同时检查防火墙/iptables规则,确保允许来自Jenkins节点192.168.7.196的SSH转发请求,没有被拦截。 - 清理Jenkins SSH连接缓存
Jenkins会缓存SSH会话,多跳板机配置后可能残留旧连接导致冲突。可以重启Jenkins服务,或者到「Manage Jenkins」→「Manage Nodes and Clouds」找到对应执行节点,断开后重新连接,清空旧缓存。 - 检查Jenkins节点路由
登录Jenkins节点192.168.7.196,执行route -n(Linux)或route print(Windows),确认节点能正常访问192.168.7.20,且没有错误路由把子网B的流量导去子网A。 - 调整插件版本
Publish Over SSH 1.25版本在多跳板机场景下存在兼容问题,可尝试降级到1.24或升级到最新稳定版,验证问题是否消失。
内容的提问来源于stack exchange,提问作者Itsme
相关产品推荐
相关产品推荐

