JSch连接SSH问题Exception:Algorithm negotiation fail

自动安装部署工具ideploy,使用ssh连接主机并部署业务 。操作系统SUSE11SP4升级到SUSE12后,出现下列报错:

JSch连接SSH问题Exception:Algorithm negotiation fail[SSH] Exception:Algorithm negotiation fail

/app/aideploy/deploy_xx/xml/deploy-stop.xml:135: The following error occurred while executing this line:
/app/aideploy/deploy_xx/xml/deploy-stop.xml:141: com.jcraft.jsch.JSchException: Algorithm negotiation fail
at com.jcraft.jsch.Session.receive_kexinit(Session.java:582)
at com.jcraft.jsch.Session.connect(Session.java:320)
at com.jcraft.jsch.Session.connect(Session.java:183)
at org.apache.tools.ant.taskdefs.optional.ssh.SSHBase.openSession(SSHBase.java:225)
at org.apache.tools.ant.taskdefs.optional.ssh.SSHExec.execute(SSHExec.java:236)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)


原因分析: 操作系统升级时,sshd版本对应也进行了升级,ssh在6.7版本以后,对一些加密算法不支持,需要手动添加。
OpenSSH和 JSch支持的交换算法不同,需要一方打开另一方支持的交换算法。 

查看ssh版本: ssh -V

OpenSSH enables only the following key exchange algorithms by default: 
- [email protected] 
- ecdh-sha2-nistp256 
- ecdh-sha2-nistp384 
- ecdh-sha2-nistp521 
- diffie-hellman-group-exchange-sha256 
- diffie-hellman-group14-sha1

Where as JSch claims to support these algorithms for key exchange: 
- diffie-hellman-group-exchange-sha1 
- diffie-hellman-group1-sha1 
解决办法: 
在SSH的配置文件 
/etc/ssh/sshd_config 
增加以下两行,让SSH支持相应的算法和MACs

KexAlgorithms [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1

MACs [email protected],[email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,[email protected],hmac-md5,hmac-sha1,hmac-sha1-96,hmac-md5-96 
完成后重启SSH即可解决问题

原文地址:https://www.cnblogs.com/dim2046/p/12122910.html

时间: 2024-10-06 22:49:17

JSch连接SSH问题Exception:Algorithm negotiation fail的相关文章

jsch jar包连接不上ssh报Algorithm negotiation fail 错误

报错信息: com.jcraft.jsch.JSchException: Algorithm negotiation fail 问题分析: sshd配置中没有打开支持jsch jar内需求的算法,默认开放的算法在man sshd_config中可以看,可能是sshd的高级版本中默认关闭了部分算法(7.5版本有这个问题). hash算法查看:ssh -Q mac kex算法查看:ssh -Q kex 传输加密算法查看:ssh -Q cipher 上面命令查看到的算法是sshd支持的算法,并不是已经

PhpStorm: Algorithm negotiation fail

事情是酱紫的,我用 phpstorm 通过 sftp 协议连接我一台服务器的时候报错 Algorithm negotiation fail 第一次遇到这个问题, 并通过 stackoverflow 搜索解决. 解决方法 编辑 /etc/ssh/sshd_config 文件 vim /etc/ssh/sshd_config 在文件末尾加入如下配置(首先确认配置文件不存在该配置项) KexAlgorithms curve25519-sha2[email protected],ecdh-sha2-ni

windows用SSH和linux同步文件&linux开启SSH&ssh client 报 algorithm negotiation failed的解决方法之一

1.安装.配置与启动 SSH分客户端openssh-client和openssh-server 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server sudo apt-get install openssh-server 然后确认sshserver是否启动了: ps -e |grep ssh 如果看到ssh

12c emcc Algorithm negotiation fail

12c emcc 安装部署遇到的问题AIX 7.1 +12c cloud control APPLIES TO: Enterprise Manager Base Platform - Version 12.1.0.2.0 and later Information in this document applies to any platform. SYMPTOMS Agent deployment from Enterprise Manger (EM) 12.1.0.2 Cloud Contro

Server responded "Algorithm negotiation failed" SSH Secure链接服务器错误

Ubuntu 16.04安装openssh-server后,使用ssh客户端连接时可能报此错误,情况如下图所示: server responded "algorithm negotiation failed" 修改服务器端ssh的配置文件,目录为:/etc/ssh/sshd_config,输入如下命令进行编辑 sudo vi /etc/ssh/sshd_config 切换编辑模式(i),设置参数 PasswordAuthentication yes 在配置文件末尾添加 Ciphers

Server responded" Algorithm negotiation failed"

ubuntu 15.10 安装 openssh-server后,使用ssh客户端连接时可能报此错误,情况如上图所示 server responded "algorithm negotiation failed” 解决方法 修改ssh的配置文件 /etc/ssh/sshd_config 在配置文件中添加: Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arc

java连接ssh执行shell脚本

在liunx上写了一个shell脚本,想通过java去调用这个shell脚本,不知道怎么去调用,在网上说使用process这个进程方式,但是我执行机和我shell脚本都不在同一台电脑,老大说java中可以连接ssh,执行shell脚本,以下代码来自他们以前的项目 public class SSH { static Connection conn = null; static String hostname = "10.40.6.232"; static String username

使用paramiko连接ssh

paramiko paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实. 安装 pip install paramiko 模块使用 执行命令-用户名+密码 #!/usr/bin/env python #coding:utf-8 import paramiko # 建立一个sshclient对象 ssh = paramiko.SSHClient() # 允许将信任的主机自动

jsch连接sftp后连接未释放掉问题排查

项目中通过jsch中的sftp实现上传下载文件.代码上了服务器之后,内存飙升,逐渐把swap区也占满,通过top监控未发现占用内存的进程,通过查找sshd进程,发现服务器多了很多sftp的进程没有被关闭. 刚开始以为是sftp公共方法设计的有问题,下面是部分代码片段 @Repository("SftpClient") public class SftpClient { private Logger logger = LoggerFactory.getLogger(SftpClient.