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

解决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.lqws.cn/news/136459.html

相关文章:

  • MYSQL之表的内连和外连
  • Hadoop企业级高可用与自愈机制源码深度剖析
  • 《人性的弱点》核心总结
  • 录制mp4
  • RAG技术解析:实现高精度大语言模型知识增强
  • promethues上监控K3S中的pod的状态
  • [AI Claude] 软件测试2
  • 互斥锁与消息队列的架构哲学
  • 网络攻防技术十三:网络防火墙
  • docker的基本命令
  • (四)docker命令—容器管理命令
  • SOC-ESP32S3部分​​​​​​​:29-乐鑫组件库的使用
  • 6个月Python学习计划 Day 14 - 异常处理基础( 补充学习)
  • Kafka broker 写消息的过程
  • UE 材质基础第三天
  • 细说C语言将格式化输出到字符串的函数sprintf、_sprintf_l、swprintf、_swprintf_l、__swprintf_l
  • MP4文件声音与视频分离
  • 网络寻路--图论
  • C语言数据结构笔记3:Union联合体+结构体取8位Bool量
  • 嵌入式常见 CPU 架构
  • 传输层协议 UDP 介绍 -- UDP 协议格式,UDP 的特点,UDP 的缓冲区
  • 激光干涉仪:解锁协作机器人DD马达的精度密码
  • [Java 基础]类,面向对象的蓝图
  • ABP-Book Store Application中文讲解 - Part 9: Authors: User Interface
  • AWS中国区IAM相关凭证自行管理策略(只读CodeCommit版)
  • Linux容器篇、第一章docker命令总结表
  • C++入门基础
  • JavaScript基础:运算符
  • 本地IP配置
  • 【电赛培训课程】电子设计竞赛工程基础知识