algorithm negotiation fail错误

1 篇文章 0 订阅

ssh client 报 algorithm negotiation failed的解决方法

在部署服务器后,服务器控制台可正常登陆,使用shell也可以正常连接,但是上传时就提示出错:algorithm negotiation fail。

错误原因:

这个问题是因为ssh客户端远程连接服务器之间的加密算法不一致导致的

解决办法:

使用其他终端(比如XSHELL、WINSCP等)登录服务器,修改ssh配置文件

ssh client 报 algorithm negotiation failed的解决方法之一 修改sshd的配置文件 /etc/ssh/sshd_config 在配置文件中添加: Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour

ssh client 报 algorithm negotiation failed的解决方法之一

修改sshd的配置文件 /etc/ssh/sshd_config

1、编辑/etc/ssh/sshd_config 在配置文件最尾端添加以下信息

Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc

MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96

KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,curve25519-sha256@libssh.org

2、修改完毕后保存退出命令 :wq

3、重启ssh服务

CentOS 7命令:systemctl restart sshd.service

CentOS 6命令:service sshd restart

--------------------------------------------------------------------------------------

项目过程中曾经遇到这样一个错误: SFTP ERROR?Algorithm negotiation fail 。 J ava 代码利用SFTP上传客户服务器报错,但是可以在Linux上上传成功,尝试过很多解决方案都不行,最后发现jsch版本需要升级, JSCH版本过低,不支持最新版本OpenSSL导致的。 将项目中jsch的jar包版本从  jschjsch-0.1.42.jar  升级到  jsch-0.1.53.jar,问题得以解决。
————————————————
版权声明:本文为CSDN博主「XiaoBenDanXY」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/XiaoBenDanXY/article/details/51200515

-----------------------------------------------------------------------------------------

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路径)

jdk1.6+OpenSSH8.0+jsch1.0.50.jar(不行,最原始版本)
OpenSSH8.0对应的jsch包应该在52版本或者更高

jdk1.6+OpenSSH8.0+jsch1.0.52.jar(有解决方案。网上说法,未亲测)
修改/etc/ssh/sshd_config文件,增加sshd的算法配置。

KexAlgorithms +diffie-hellman-group1-sha1

jdk1.6+OpenSSH8.0+jsch1.0.53.jar(有解决方案。)
在2的基础上,代码增加

Properties sshConfig = new Properties();

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

jdk1.7+OpenSSH8.0+jsch1.0.52.jar(不行)
jdk1.8+OpenSSH8.0+jsch1.0.52.jar(亲测可行)
总结:当ssh版本做了大的升级后,需要对应的jsch包做升级。Jdk也要做升级。但考虑到整体项目的编译情况,建议不要换用jdk。而是取2方案。
————————————————
版权声明:本文为CSDN博主「185的阿平」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42740540/article/details/103758324

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值