关于jsch连接sftp提示DH key size must be multiple of 64,以及更改jsch算法列表
这个是因为jdk8的一个bug引起的,见
使用jsch0.1.55的话,需要修改com.jcraft.jsch.DHGEX(上文链接有提到),大概在80行
try {
Class c = Class.forName(session.getConfig("dh"));
// Since JDK8, SunJCE has lifted the keysize restrictions
// from 1024 to 2048 for DH.
//参考https://bugs.openjdk.org/browse/JDK-8164963
preferred = max = 1024;
dh = (com.jcraft.jsch.DH) (c.newInstance());
dh.init();
} catch (Exception e) {
throw e;
}
如果使用Maven Repository: com.github.mwiede » jsch这个包,则没有这个问题。
如果需要新增更安全的加密算法,按以下方法增加:
static {
JSch.setConfig("kex", JSch.getConfig("kex") + ",diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1");
JSch.setConfig("server_host_key", JSch.getConfig("server_host_key") + ",ssh-rsa,ssh-dss");
}
使用ssh -v可以看到可以看到可以协商的算法列表。