JSch连接SSH问题Exception:Algorithm negotiation fail

使用Jenkins配置完远程SSH服务器,发生无法连接问题,查看Log后找到

[SSH] Exception:Algorithm negotiation fail
    com.jcraft.jsch.JSchException: Algorithm negotiation fail
    at com.jcraft.jsch.Session.receive_kexinit(Session.java:520)
    at com.jcraft.jsch.Session.connect(Session.java:286)
    at com.jcraft.jsch.Session.connect(Session.java:150)
    at org.jvnet.hudson.plugins.SSHSite.createSession(SSHSite.java:141)
    at org.jvnet.hudson.plugins.SSHSite.executeCommand(SSHSite.java:151)
    at org.jvnet.hudson.plugins.SSHBuildWrapper.executePreBuildScript(SSHBuildWrapper.java:75)
    at org.jvnet.hudson.plugins.SSHBuildWrapper.setUp(SSHBuildWrapper.java:59)
    at hudson.model.Build$BuildExecution.doRun(Build.java:154)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:533)
    at hudson.model.Run.execute(Run.java:1754)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:89)
    at hudson.model.Executor.run(Executor.java:240)
Finished: FAILURE

原因分析:

OpenSSH和 JSch支持的交换算法不同,需要一方打开另一方支持的交换算法。

OpenSSH enables only the following key exchange algorithms by default:
- curve25519-sha256@libssh.org
- 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 curve25519-sha256@libssh.org,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 hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,umac-128@openssh.com,hmac-md5,hmac-sha1,hmac-sha1-96,hmac-md5-96

完成后重启SSH即可解决问题

时间: 2024-09-23 11:02:33

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

sftp-JSCH连接SFTP服务Algorithm negotiation fail

问题描述 JSCH连接SFTP服务Algorithm negotiation fail JAVA环境:java version ""1.6.0_45""Java(TM) SE Runtime Environment (build 1.6.0_45-b06)Java HotSpot(TM) Server VM (build 20.45-b01 mixed mode) jsch-0.1.42.jar SFTP环境:OpenSSH_6.7p1 OpenSSL 1.0.1j

文件传输-java使用SSH方式上传报错:Algorithm negotiation fail

问题描述 java使用SSH方式上传报错:Algorithm negotiation fail java用jsch实现文件传输(SSH形式),但是好像本地和服务器加密方式不一致,一直报错: com.jcraft.jsch.JSchException: Algorithm negotiation fail 解决方案 如果是已form表单中的上传.需要改form的属性enctype( 属性规定在发送到服务器之前应该如何对表单数据进行编码.) 改属性默认值:application/x-www-form

ppk-sftp用证书文件登录报algorithm negotiation fail

问题描述 sftp用证书文件登录报algorithm negotiation fail 请教各位大神,我要使用sftp传输文件,可以再登录这块出现了问题几天都没找到解决方法 开发语言C# 用的是网上开源的Tamir.SharpSSH.dll 对方提供了host name和user name 用工具PuTTY在本机生成了2个文件 public key和private key public key已传给对方加过白名单了 用工具WinSCP 输入host name 和user name再传入priva

auth fail-JSCH连接SFTP服务报错: Auth fail

问题描述 JSCH连接SFTP服务报错: Auth fail 手动测试SFTP连接OK,程序JSCH连接SFTP就报错com.jcraft.jsch.JSchException: Auth fail.已经确认了N遍,用户名/密码/ip配置绝对没错.求各位大神积极发言帮忙解决!!不胜感激!! 解决方案 请尝试 首先确保服务器上的/etc/ssh/sshd_config中的PasswordAuthentication设置为 PasswordAuthentication yes 如果还不行,可以参考s

使用jsch连接sftp

问题描述 小弟开发过程中遇到了一个问题,当我使用jsch连接sftp的时候,我可以打开通道,但是不能连接上是什么情况?返回的错误信息是:信息:ConnectChannel.com.jcraft.jsch.JSchException:java.io.IOException:channelisbrokenatcom.jcraft.jsch.ChannelSftp.start(ChannelSftp.java:228)atcom.jcraft.jsch.Channel.connect(Channel.

《树莓派实战秘籍》——1.12 技巧12连接SSH

1.12 技巧12连接SSH 树莓派实战秘籍 对于任何headless项目.以及任何从方便的角度来说和你相距较远的项目,或者仅仅只是因为你懒得穿过房间,这些情况下你都需要知道如何SSH到你的树莓派上. OpenSSH,由OpenBSD项目为安全通信所创建的开源的工具集,很可能在你选择的任何发行版上都有效. 如果你有一点点复古倾向,请注意"Squeeze"这个在"Wheezy"之前的版本,它并没有在默认情况下运行SSH. 如果你不能确定,你要做的就是尝试SSH到你的P

Python自动连接ssh的方法_python

本文实例讲述了Python自动连接ssh的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/python #-*- coding:utf-8 -*- import sys, time, os try: import pexpect except ImportError: print """ You must install pexpect module """ sys.exit(1) addr_map = { 'v3' :('

求用jsch通过ssh连接远程sqlite数据库(数据库在unix上)java代码例子

问题描述 如题,求各位大侠帮个忙....3qqqqq 解决方案 解决方案二:该回复于2011-02-28 20:04:15被版主删除

无法连接ssh,fatal: daemon() failed: No such device

今天发现一个服务器的sshd无法启动,查看/var/log/secure里发现:fatal: daemon() failed: No such device 解决办法: rm /dev/null mknod /dev/null c 1 3 chmod 666 /dev/null