gpt4 book ai didi

ANT SSHEXEC 因算法协商失败错误而失败

转载 作者:行者123 更新时间:2023-12-02 14:15:02 25 4
gpt4 key购买 nike

我只是想使用 ant sshexec 任务连接到远程主机。我在 ant lib 目录中有所需的 jar,并且能够使用 putty 连接到远程主机。
这就是我运行 ssh 的方式

 <sshexec host="host"
username="username"
password="password"
trust="yes"
command="ls"/>

似乎存在与服务器不匹配的加密算法。我如何指定算法,因为我没有看到此任务的任何属性 [Ant doc][1]。这是我得到的错误日志:
com.jcraft.jsch.JSchException: Algorithm negotiation fail
at com.jcraft.jsch.Session.receive_kexinit(Session.java:540)
at com.jcraft.jsch.Session.connect(Session.java:288)
at com.jcraft.jsch.Session.connect(Session.java:145)
at org.apache.tools.ant.taskdefs.optional.ssh.SSHBase.openSession(SSHBase.java:212)
at org.apache.tools.ant.taskdefs.optional.ssh.SSHExec.execute(SSHExec.java:158)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
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)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
at org.apache.tools.ant.Main.runBuild(Main.java:758)
at org.apache.tools.ant.Main.startAnt(Main.java:217)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)

最佳答案

TL;DR 编辑您的 sshd_config 并在 KexAlgorithms 中启用对 diffie-hellman-group-exchange-sha1 和 diffie-hellman-group1-sha1 的支持:

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

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
我怀疑问题出现在 OpenSSH 6.7 中的以下更改之后:“密码和 MAC 的默认设置已被更改以删除不安全的算法。”。 (见 changelog)。该版本于 10 月 6 日发布,并于 10 月 21 日通过 Debian 测试(参见 Debian changelog)。

默认情况下,OpenSSH 仅启用以下 key 交换算法:

curve25519-sha256@libssh.org
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
diffie-hellman-group-exchange-sha256
diffie-hellman-group14-sha1
而 JSch 声称支持 these algorithms (参见“功能”下)进行 key 交换:

diffie-hellman-group-exchange-sha1
diffie-hellman-group1-sha1
因此,事实上,他们无法就通用 key 交换算法达成一致。更新 sshd_config(并重新启动 SSH 服务器)就可以了。显然,JSch 应该从 0.1.50 版本开始支持“diffie-hellman-group-exchange-sha256”方法(参见 changelog)。

关于ANT SSHEXEC 因算法协商失败错误而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21524609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com