OpenSSH8.0对应jsch jar包版本

由于连接sftp所用jar最终会使用jsch的包。然而jsch的包会有各种版本问题。来梳理一下,

根源是jdk1.6支持的加密算法较少(jdk8支持了大多数加密算法),而openSSH8.0默认屏蔽了jdk1.6支持的加密算法,如:diffie-hellman-group1-sha1等。openSSH7的版本能支持1.6的算法。

首先查看主机ssh命令,执行ssh -v

 

 

因为一台主机可能放多个项目,那么不能换全局的jdk。每个项目可以指定jdk启动,在tomcat的bin目录下setclasspath.sh,和catalina.sh中增加

export JAVA_HOME=/ecp_web/jdk1.8/jdk1.8.0_171(jdk路径)

export JRE_HOME=/ecp_web/jdk1.8/jdk1.8.0_171/jre(jre路径)

 

  1. jdk1.6+OpenSSH8.0+jsch1.0.50.jar(不行,最原始版本)

OpenSSH8.0对应的jsch包应该在52版本或者更高

  1. jdk1.6+OpenSSH8.0+jsch1.0.52.jar(有解决方案。网上说法,未亲测)

修改/etc/ssh/sshd_config文件,增加sshd的算法配置。

KexAlgorithms +diffie-hellman-group1-sha1

  1. jdk1.6+OpenSSH8.0+jsch1.0.53.jar(有解决方案。)

在2的基础上,代码增加

Properties sshConfig = new Properties();

sshConfig.put("kex", "diffie-hellman-group1-sha1");

  1. jdk1.7+OpenSSH8.0+jsch1.0.52.jar(不行)
  2. jdk1.8+OpenSSH8.0+jsch1.0.52.jar(亲测可行)

总结:当ssh版本做了大的升级后,需要对应的jsch包做升级。Jdk也要做升级。但考虑到整体项目的编译情况,建议不要换用jdk。而是取2方案。

你可能感兴趣的:(java,linux)