异常:
com.jcraft.jsch.JSchException:Algorithm negotiation fail
at com.jcraft.jsch.Session.receive_kexinit(Session.java:590) ~[jsch-0.1.54.jar:na]
at com.jcraft.jsch.Session.connect(Session.java:320) ~[jsch-0.1.54.jar:na]
at com.jcraft.jsch.Session.connect(Session.java:183) ~[jsch-0.1.54.jar:na]
程序:连接SFTP服务器
环境:linux redhat7.1 ,jdk1.7 ,jsch0.1.54
异常原因:SFTP服务器的加密算法与本地不匹配,本地没有对应的加密算法。
解决方式:
为java 安装JCE 包:
JCE(Java Cryptography Extension)是一组包,它们提供用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现。
JDK1.7对应的JCE包下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK1.8对应的JCE包下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下载后得到一个zip包,进行解压,得到local_policy.jar、US_export_policy.jar两个jar 包。
这两个jar文件放到%JDK_HOME%\jre\lib\security下。
再启动程序,异常解决。