报错如下:
[ERROR] upload.SSHThread 2016-01-26 18:37:45,825 : Create ssh session Failed!! ip=132.90.101.8, username=pnms
com.jcraft.jsch.JSchException: Session.connect: java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive)
或者
[ERROR] upload.SSHThread 2016-09-19 13:28:16,981 : Create ssh session Failed!! ip=132.77.255.17, username=pnms
com.jcraft.jsch.JSchException: Session.connect: java.io.IOException: End of IO Stream Read
此ssh连接问题是由于主机ssh中缺少与jsch jar包匹配的加密算法导致,jsch jar包的默认加密算法貌似是diffie-hellman-group-exchange-sha1。在目标主机ssh服务的sshd_config文件中添加下列加密算法并重启ssh服务即可解决ssh连接问题。
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256
看评论大家修改ssh配置容易出错,太危险,上面的方式摒弃。
把JAVA程序的JDK升级到1.8版本并更新jsch jar包到官方最新包 ,测试过后可以正常连接各种ssh版本。
如果仍然不能解决,建议考虑如下方式:
1.美国的出口限制,JDK自带的加密算法位数都不超过256位,需要手工替换。
官方JCE无限制权限策略文件的下载:
JDK6的下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
JDK7的下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK8的下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
2.从oracle官网下载jce_policy-8.zip,并解压,将local_policy.jar和US_export_policy.jar替换到JAVA_HOME/jre/lib/security目录,并重启应用就可以了。
下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
或者通过j2ssh.jar方式替代jsch。
参考链接:
http://www-01.ibm.com/support/docview.wss?uid=swg21644338