You need to enable JavaScript to run this app. 使用Java JSCH通过跳板机连接目标服务器时出现Connection reset错误
优惠活动
大模型
产品
解决方案
定价
更多

使用Java JSCH通过跳板机连接目标服务器时出现Connection reset错误

排查与解决步骤
  • 优先修正端口转发的参数错误
    当前控制台输出的转发规则为localhost:64038 -> jumpServerSession64038,完全不符合预期的本地端口 -> 目标服务器IP:22格式,说明调用jumpServerSession.setPortForwardingL(0, 目标IP, 22)时,传入的第二个参数不是server-2的真实网络地址,错误传入了跳板机会话对象的相关引用值,导致跳板机收到隧道转发请求时,无法解析目标地址,直接重置连接。
    校验方式:打印实际传入端口转发方法的目标IP值,确认是跳板机网络范围内可访问的server-2真实IP/域名,排除占位符未替换、变量取错的问题。
  • 验证跳板机到目标服务器的连通性
    本地端口转发的实际流量路径是:本地随机转发端口 → 已建立的跳板机会话 → 从跳板机网络位置发起对server-2 22端口的连接。如果跳板机本身受防火墙、安全组策略限制,无法访问server-2的22端口,会直接重置从本地发来的隧道连接,触发Session.connect: java.net.SocketException: Connection reset报错。
    校验方式:直接登录server-1跳板机,执行nc -zv 目标server2 IP 22命令,确认跳板机可以正常连通server-2的SSH服务端口,不存在网络拦截。
  • 修正代码中的资源泄漏问题
    代码中连续两次对同一个channel变量赋值:先打开sftp通道,紧接着又覆盖变量打开exec通道,前一个已打开的sftp通道没有被主动关闭,长期运行会占满跳板机的会话通道配额,导致后续新连接被服务端拒绝重置。
    修正方式:删除无用的sftp通道打开逻辑,仅保留业务需要的exec通道,所有session、channel对象在使用完成后主动调用disconnect()方法释放资源。
  • 校验JSCH依赖的版本兼容性
    若使用的是2018年之前发布的老旧com.jcraft.jsch版本(如0.1.49及更早版本),面对开启了新版SSH密钥交换算法的目标服务器,会在SSH握手阶段被服务端主动断开连接,触发连接重置。可升级到最新的兼容版本JSCH依赖解决协议不匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 02:54:09