我正在尝试从 Jenkins ssh 到本地服务器,但抛出以下错误:
[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
SSH 服务器上安装的 Java 版本:
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
客户端安装的java版本:
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
也尝试过这个解决方案:JSchException:算法协商失败 https://stackoverflow.com/questions/6263630/jschexception-algorithm-negotiation-fail但它不起作用。从腻子看来一切都好。连接已建立,但当我触发 Jenkins 作业时,会引发错误。我应该尝试另一个版本的 ssh 服务器吗?现在我正在使用 copssh。
TL;DR 编辑您的 sshd_config 并在 KexAlgorithms 中启用对 diffie-hellman-group-exchange-sha1 和 diffie-hellman-group1-sha1 的支持:
KexAlgorithms [email protected] /cdn-cgi/l/email-protection,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
我怀疑这个问题是在 OpenSSH 6.7 中进行以下更改后出现的:“默认的密码和 MAC 集已更改以删除不安全的算法。”。 (看变更日志 http://www.openssh.com/txt/release-6.7)。该版本于 10 月 6 日发布,并于 10 月 21 日进入 Debian 测试(请参阅Debian 变更日志 https://launchpad.net/debian/+source/openssh/+changelog).
OpenSSH 默认情况下仅启用以下密钥交换算法:
- [电子邮件受保护] /cdn-cgi/l/email-protection
- ECDH-SHA2-nistp256
- ECDH-SHA2-nistp384
- ECDH-SHA2-nistp521
- 迪菲-赫尔曼-组交换-sha256
- 迪菲-赫尔曼-group14-sha1
而 JSch 声称支持这些算法 http://www.jcraft.com/jsch/(参见“功能”下)密钥交换:
- 迪菲-赫尔曼-组交换-sha1
- 迪菲-赫尔曼-group1-sha1
事实上,他们无法就通用密钥交换算法达成一致。更新 sshd_config(并重新启动 SSH 服务器)即可解决问题。显然,自版本 0.1.50 以来,JSch 应该支持“diffie-hellman-group-exchange-sha256”方法(请参阅变更日志 http://www.jcraft.com/jsch/ChangeLog).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)