JSch连接SFTP Exception:Algorithm negotiation fail问题解决
问题背景
测试环境sftp采用的jsch作为客户端来连接服务端进行文件传输,然后应用部署到生产后报错,算法协商失败
com.jcraft.jsch.JSchException: Algorithm negotiation fail
问题分析
Algorithm negotiation fail 算法协商失败
sftp和ssh用的是同一套加密算法,算法协商失败为客户端与服务端所支持的算法不一致,导致报该异常。解决方法为统一客户端及服务端所支持的算法。
检查客户端及服务端的版本
查看ssh版本: ssh -V
有问题的生产环境为:8.5
没问题的测试环境为:7.4
ssh默认支持的算法为
OpenSSH enables only the following key exchange algorithms by default:
- curve25519-sha256@libssh.org
- ecdh-sha2-nistp256
- ecdh-sha2-nistp384
- ecdh-sha2-nistp521
- diffie-hellman-group-exchange-sha256
- diffie-hellman-group14-sha1
jsch版本为 0.29支持的算法为
jsch因为这0.29为十年前的版本了,对应支持的算法为
Where as JSch claims to support these algorithms for key exchange:
- diffie-hellman-group-exchange-sha1
- diffie-hellman-group1-sha1
问题解决
该问题解决还是两种方法:
1、客户端升级jsch版本,升级完后及可支持新版本ssh
2、服务端向下兼容低版本的算法
解决方式一
直接下载最新版本的jsch的jar包进行替换即可。
这种方式对于技术来说应该是首选的了,但这十年的老代码本该淘汰,实在是没人敢动他,所以我们没有采用方式一。
解决方式二
服务端向下兼容低版本的算法,这就是直接修改ssh的配置文件
在SSH的配置文件
/etc/ssh/sshd_config
在配置文件中最后新增
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
注意:
- 对应的算法必须包含客户端需要支持的算法
diffie-hellman-group-exchange-sha256,
diffie-hellman-group14-sha1,
diffie-hellman-group-exchange-sha1,
diffie-hellman-group1-sha1
- 配置完成后重启ssh服务
service sshd restart
systemctl restart sshd.service
该方法可以临时解决这个问题,但会导致漏扫提示存在漏洞。对于安全性要求高的,不建议使用。
解决方式三
降低ssh版本,让对应的客户端可以直接连上。因为在测试环境7.4的版本可以直接连接进行文件传输,所以生产采用的把8.5的版本降低为测试环境的7.4,生产与测试保持版本一致,避免还有其他环境方面的问题。
卸载ssh,重新安装7.4版本的ssh,重启ssh服务即可
其他补充
MACs算法配置
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,umac-128@openssh.com,hmac-md5,hmac-sha1,hmac-sha1-96,hmac-md5-96
其他可能导致该问题的情况
JDK的版本为1.7以下,对应支持的算法较少,需要单独在jdk中进行配置
JSch连接SFTP Exception:Algorithm negotiation fail问题解决相关推荐
- 主机ssh升级到6.7以上版本后,使用jsch jar包ssh连接不上报Algorithm negotiation fail问题的解决办法
文章目录 一. 解决方案 1. 添加加密算法 2. 升级版本 3. 回退版本 4. j2ssh.jar方式替代jsch 5. jsch版本下载列表 一. 解决方案 1. 添加加密算法 ssh连接问题是 ...
- jsch jar包连接不上ssh报Algorithm negotiation fail 错误
1.jsch jar包连接不上ssh报Algorithm negotiation fail 错误 1 com.jcraft.jsch.JSchException: Algorithm negotiat ...
- Algorithm negotiation fail解决
Algorithm negotiation fail 是JDk1.8的Strong encrytion的问题 具体方法见readme --本人将解决问题的方式提供下载(http://download ...
- java使用jsch连接sftp报permission denied问题
在生产环境上,使用jsch的sftp.get(filepath,byteArrayOutputStream)时,报出了以下错误 因为是用其他账号登录,所以没有文件权限.
- 关于使用JSch连接sftp服务器引发的异常
异常信息: com.jcraft.jsch.JSchException: Session.connect: java.io.IOException: End of IO Stream Readat c ...
- 连接Ubuntu 出现 Algorithm Negotiation failed 错误
以下方法在最新的Ubuntu 20.04验证成功: sudo vim /etc/ssh/sshd_config 增加以下两行: KexAlgorithms +diffie-hellman-group1 ...
- Ubuntu16.04连接SSH出现 Server responded “Algorithm negotiation failed” 的解决方法
Ubuntu16.04连接SSH出现 Server responded "Algorithm negotiation failed" 的解决方法 参考文章: (1)Ubuntu16 ...
- java jsch_java使用JSCH实现SFTP文件管理
本文实例为大家分享了java使用JSCH实现SFTP文件管理的具体代码,供大家参考,具体内容如下 一.连接配置 1.在项目中导入jsch-0.1.51.jar包: 2.创建SFTP类,存放连接属性,其 ...
- java连接sftp工具类
本工具类支持远程连接sftp,上传下载文件 需要用到是jar是jsch-0.1.29.jar import java.io.BufferedReader;import java.io.File;imp ...
- java jsch api_详解Java使用Jsch与sftp服务器实现
在实际项目中常会遇到需要连接服务器获取文件的场景,如账务系统需要通过连接行方的sftp服务器拉取回单文件.本文将主要讨论使用Java中的jsch与sftp服务器实现ssh免密连接. 一.什么是SFTP ...
最新文章
- 你的微博也被盗赞?试试HSTS强制HTTPS加密
- 用python画常密度轮廓线,如何使用Matplotlib在极坐标中绘制具有等高线密度线的散点图?...
- 发布dotNetCore程序到Kubernetes
- 每日一笑 | 男朋友整天沉迷游戏怎么办...?
- 牛客网 【每日一题】5月26日题目精讲 [JSOI2007]建筑抢修
- 带余除法(信息学奥赛一本通-T1009)
- 120天的努力,从牵引力教育开始逆袭的!
- MANIFEST.MF
- python网络爬虫笔记(九)
- python自动化办公入门书籍-Python自动化办公实战教程2020最新带源码
- 137.只出现一次的数字II
- 图像匹配之归一化积相关灰度匹配
- 【动画消消乐】HTML+CSS 自定义加载动画 053
- libtorrent编译
- matlab 生成 gif
- 国赛数模2017B思路汇总第一部分(题目一)
- 计算机网络到底该怎么学?
- 福建闽北卫生学校计算机考试,★福建闽北卫生学校
- 022 Rust死灵书之污染
- 阿里巴巴张勇:双11正式全球化 指挥部移师北京
热门文章
- 工业互联网标识解析体系
- Python 实现Mac 屏幕截图
- 计算机信息安全相关文献,优秀计算机信息安全论文参考文献 计算机信息安全外文文献怎么找...
- LEBERT:Lexicon Enhanced Chinese Sequence Labelling Using BERT Adapter
- 计算机锁屏图片怎么设置方法,电脑锁屏照片怎么设置
- 如何录用有竞业限制协议的员工?
- 北京大学公开课《数据结构与算法Python版》
- Region和Available Zone的区别
- JS特效三:LightBox(轮播图+图片弹窗)
- javascript百度地图使用(根据地名定位、根据经纬度定位)