主机ssh升级到6.7以上版本后,使用jsch jar包ssh连接不上报Algorithm negotiation fail问题的解决办法

文章目录

          • 一. 解决方案
            • 1. 添加加密算法
            • 2. 升级版本
            • 3. 回退版本
            • 4. j2ssh.jar方式替代jsch
            • 5. jsch版本下载列表
一. 解决方案
1. 添加加密算法

ssh连接问题是由于主机ssh中缺少与jsch jar包匹配的加密算法导致,jsch jar包的默认加密算法貌似是diffie-hellman-group-exchange-sha1。

在目标主机ssh服务的sshd_config文件中添加下列加密算法并重启ssh服务即可解决ssh连接问题。

1
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256
2. 升级版本

把OpenSSH和jsch的版本进行升级

jsch jar包要更新到0.1.50以上版本,经测试0.1.42版本与openssh6.7配合有问题。

--------------------------------2020-06-10—再次更新------------------------

把JAVA程序的JDK升级到1.8版本并更新jsch jar包到官方最新包 ,测试过后可以正常连接各种ssh版本。

版本适配 对应适配版本 备注
OpenSSH_8.2p1 jsch-0.1.55.jar
OpenSSH6.7 jsch-0.1.50.jar 及以上版本均可适配
OpenSSH5.3x jsch-0.1.8.jar
3. 回退版本

回退到以前的版本

4. j2ssh.jar方式替代jsch
5. jsch版本下载列表

https://sourceforge.net/projects/jsch/files/jsch.jar/