jsch 上传 com.jcraft.jsch.JSchException: verify: false

今天线上环境 在上文件到sftp的时候 出现 如下了如下异常(只出现过一次

 com.jcraft.jsch.JSchException: verify: false
    at com.jcraft.jsch.Session.connect(Session.java:309) 
       ~[jsch-0.1.48.jar:na]at com.jcraft.jsch.Session.connect(Session.java:162) 
       ~[jsch-0.1.48.jar:na]at com.winston.common.utils.SFTPUtil.connect(SFTPUtil.java:43) 

在网上查了一番之后  很多网友说到升级jsch版本就可以了。

后面去官网看了一下  果然是以前的版本存在问题。0.1.50版本已经修复。(

 但是也有网友说 还没修复。我打算下次系统升级的时候 再顺便升级一下这个jar包版本。在此记录一下,避免忘记。

### 解析 `com.jcraft.jsch.JSchException: Algorithm negotiation fail` 错误 当遇到 `com.jcraft.jsch.JSchException: Algorithm negotiation fail` 的错误时,通常意味着客户端(JSch库)和服务端(OpenSSH服务器)之间未能就加密算法达成一致。这可能是由于服务端升级或配置更改引起的。 #### 原因分析 该问题的根本原因是 SSH 客户端和服务器之间的密钥交换算法不匹配[^1]。具体来说: - **版本差异**:如果服务器上的 OpenSSH 版本被更新,则可能会禁用某些旧版算法,而这些正是 JSch 库所依赖的。 - **默认设置冲突**:不同的操作系统可能预设了不同的安全策略,默认启用/禁用了特定类型的加密方法。 #### 解决方案 为了修复此问题,可以采取以下几种方式之一来调整双方的支持列表直至找到共同点: ##### 方法一:修改 JSch 支持的算法集 通过编程手段指定允许使用的 KEX (Key Exchange), cipher 和 MAC 算法集合。例如,在建立会话之前调用如下代码片段以增加兼容性选项: ```java Properties config = new Properties(); config.put("kex", "diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1"); config.put("cipher.s2c", "aes128-ctr,aes128-cbc,3des-cbc"); config.put("cipher.c2s", "aes128-ctr,aes128-cbc,3des-cbc"); config.put("mac.s2c", "hmac-md5,hmac-sha1"); config.put("mac.c2s", "hmac-md5,hmac-sha1"); Session session = jsch.getSession(username, host); session.setConfig(config); // 设置自定义配置项 ``` 这种方法适用于开发者能够控制应用程序源码的情况,并且可以根据实际情况灵活调整参数值[^2]。 ##### 方法二:降级或重新编译 OpenSSH 服务端 对于拥有较高权限的操作人员而言,另一种解决方案是在不影响安全性的情况下适当放宽服务器的安全策略,比如回滚至较早版本的 OpenSSH 或者手动编辑 `/etc/ssh/sshd_config` 文件中的 Ciphers 和 MACs 参数以便更好地适应现有客户端的要求[^3]。 然而需要注意的是,这种做法应当谨慎考虑其潜在风险并充分评估对企业内部网络安全的影响后再做决定。 ##### 方法三:升级 JSch 库版本 考虑到官方维护团队持续改进产品特性以及增强与其他软件组件间的互操作性的努力,建议尽可能选用最新的稳定发行版作为基础开发工具链的一部分。新发布的 JSch 版本往往已经解决了许多已知的问题并且增加了对更多现代协议标准的支持[^4]。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值