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

求助:运行Java程序触发JSchException:connection is closed by foreign host

排查 com.jcraft.jsch.JSchException: connection is closed by foreign host 异常的方向

这个异常说明你的Java程序和Windows远程服务器的SSH连接被对方主动断开,结合你要实现文件传输的需求,按以下方向排查:

  • Windows服务器未开启SSH服务
    JSch依赖SSH协议建立连接,Windows默认没有内置SSH服务(Windows 10/11需手动安装OpenSSH服务,旧版本需部署FreeSSHd这类第三方SSH服务)。先确认服务器上的SSH服务是否已安装并正常运行,先用Putty、Xshell这类普通SSH客户端尝试连接,排除基础连接问题。

  • 连接参数错误

    • 检查主机IP/域名是否正确,先用ping命令测试网络可达性
    • 确认SSH端口是否匹配:默认是22,若服务器修改过端口,程序中必须指定对应端口
    • Windows用户名格式要准确:本地账户用机器名\用户名或直接用户名;域账户用域名\用户名,避免因认证格式错误被拒绝
  • 防火墙/安全组拦截

    • Windows防火墙需放行SSH端口(默认22)的入站规则
    • 客户端所在网络的防火墙需放行SSH端口的出站规则
    • 若服务器在云平台,检查云安全组是否开放了对应SSH端口
  • SSH服务配置限制

    • 检查SSH服务是否禁用了密码登录(若程序用密码认证),需在SSH配置文件中开启PasswordAuthentication yes
    • 确认服务器的SSH服务是否限制了客户端IP访问,需将你的客户端IP加入允许列表
    • 检查服务器的SSH服务是否有并发连接限制或会话超时设置,导致连接被强制断开
  • JSch代码实现问题

    • 确认代码中是否设置了合理的连接超时(比如session.setTimeout(30000)),避免因超时被断开
    • 检查SFTP通道是否正确打开:需调用ChannelSftp channel = (ChannelSftp) session.openChannel("sftp")并执行channel.connect()
    • 若使用密钥认证,确认私钥路径、密钥密码(若有)是否正确,服务器是否已添加对应公钥

内容的提问来源于stack exchange,提问作者Abdelilah El-Hadad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:22:39