jsch连接sftp失败问题

jsch是一个纯java实现的sftp工具包,因为历史版本原因,很多机器使用的Jsch包比较陈旧。但是服务端ssh服务可能升级到6.7以上,特别是7.0以上,服务端默认会关闭安全性较低的密钥协商算法,从而导致协商无法成功,sftp连接建立失败。

这就是为什么手工执行 sftp username@xxx.xxx.xxx.xxx 可以免密登录,而程序会一直失败,因为走的是两条不同的路径。

相关的报错信息可能类似:

no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

解放方案一、服务端修改sshd_config配置文件

/etc/ssh/sshd_config最后添加:
KexAlgorithms +diffie-hellman-group1-sha1

#然后重启ssh服务
# service sshd restart

解决方案二、客户端下载并升级Java密码学扩展JCE。或者JDK直接升级到1.8。
如何升级JCE,请参考 https://www.cnblogs.com/husbandmen/articles/7096120.html

解决方案三、jsch包更新到0.1.54版本以上,并且在代码中设置:

your Method {
session.setConfig("StrictHostKeyChecking", "no");// That solve the problem
 }
//如果您需要此Java版本,则此代码可在Java 1.5或更高版本中使用。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容