当前位置: 首页 > java >正文

解决com.jcraft.jsch.JSchException: Algorithm negotiation fail

文章目录

    • 一、背景:一个生产环境的ssh连接服务器报 Algorithm negotiation fail
    • 二、问题根源
    • 三、解决方案
      • 3.1、引入 com.github.mwiede:jsch 替代原 JSch
      • 3.2、为什么这个分支能解决问题?

一、背景:一个生产环境的ssh连接服务器报 Algorithm negotiation fail

最近在项目中需要从某台 Linux 服务器通过 ssh 连接服务器,代码中使用了经典的 JSch 库(版本 0.1.55)。然而,当部署到生产环境(Kylin Linux Advanced Server V10(sp4) )时,却突然抛出了一个致命错误:

com.jcraft.jsch.JSchException: Algorithm negotiation fail

搜索一番后发现,这个问题通常是由于 SSH 服务端禁用了旧版加密算法,而客户端(JSch)又不支持新算法导致的。网上清一色的建议是“升级 JSch 到最新版”,但尴尬的是——我用的已经是官方仓库最新的 0.1.55 了!

二、问题根源

服务端算法升级:现代 OpenSSH(我遇到问题的服务器SSH版本:OpenSSH_8.2p1)默认禁用 ssh-rsa、diffie-hellman-group1-sha1 等旧算法,而 JSch 的官方版本(0.1.55)仍未适配新算法(如 rsa-sha2-256)。
通过 ssh -V 命令可以查看服务器的ssh版本
在这里插入图片描述

JSch 的维护停滞:原 JSch 仓库(com.jcraft)更新缓慢,最后一次提交停留在Nov 26, 2018 ,导致无法及时支持新协议。

三、解决方案

在尝试了调整服务端配置、强制指定算法等方法均告失败后,最终通过 替换依赖库 彻底解决问题
具体步骤如下:

3.1、引入 com.github.mwiede:jsch 替代原 JSch

这个分支由开源社区维护,修复了官方库的许多兼容性问题,且支持新算法。
Maven 配置

<!-- https://mvnrepository.com/artifact/com.github.mwiede/jsch --><dependency><groupId>com.github.mwiede</groupId><artifactId>jsch</artifactId><version>0.2.24</version></dependency>

Gradle 配置

implementation 'com.github.mwiede:jsch:0.2.24'

3.2、为什么这个分支能解决问题?

算法支持增强:该分支主动适配了 OpenSSH 8.x+ 的服务端,支持 rsa-sha2-256/512 等新算法。

持续维护:社区开发者定期修复问题,例如 Issue #45 明确提到解决了与最新 OpenSSH 的兼容性。

在这里插入图片描述

http://www.xdnf.cn/news/11971.html

相关文章:

  • CppCon 2015 学习:Beyond Sanitizers
  • 全角转半角函数(APP)
  • Viggle:开启视频人物替换新纪元
  • 书籍转圈打印矩阵(8)0604
  • Reids 如何处理缓存穿透、缓存击穿、缓存雪崩问题?
  • 使用ArcPy进行栅格数据分析
  • 麒麟+ARM架构安装mysql8的操作指南
  • 各个布局的区别以及示例
  • Sql Server 中常用语句
  • 计算机系统结构-第五章-目录式协议
  • psycopg2-binary、pgvector、 SQLAlchemy、 PostgreSQL四者的关系
  • 【无人机】无人机UAV、穿越机FPV的概念介绍,机型与工具,证书与规定
  • JavaScript性能优化实战:深入探讨JavaScript性能瓶颈与优化技巧
  • UE5 创建了一个C++类,现在我还有一个蓝图类,我想将编写的C++类中包含的功能加入到这个蓝图类里面,如何做到
  • 2025年渗透测试面试题总结-腾讯[实习]安全研究员(题目+回答)
  • P3156 【深基15.例1】询问学号
  • Windows系统工具:WinToolsPlus 之 SQL Server 日志清理
  • Centos 8系统ext4文件系统类型进行扩容缩容 (LVM)
  • FFMPEG 提取视频中指定起始时间及结束时间的视频,给出ffmpeg 命令
  • C#学习第27天:时间和日期的处理
  • 开发源码搭建一码双端应用分发平台教程:逐步分析注意事项
  • H5移动端性能优化策略(渲染优化+弱网优化+WebView优化)
  • 从传统 RAG 到知识图谱 + Agent
  • 信创认证通关攻略:从环境搭建到测试报告的全流程操作指南
  • Day39 训练
  • 安卓开发:Reason: java.net.SocketTimeoutException: Connect timed out
  • Windows蓝屏查找、查看日志文件处理方法
  • setting up Activiti BPMN Workflow Engine with Spring Boot
  • FAST(Features from Accelerated Segment Test)角检测算法原理详解和C++代码实现
  • CanvasGroup篇