SSH 使用 jschexception verify false 有时会失败

Posted

技术标签:

【中文标题】SSH 使用 jschexception verify false 有时会失败【英文标题】:SSH using jschexception verify false sometimes fails 【发布时间】:2012-08-30 01:52:51 【问题描述】:

要求是从一台服务器ssh到多台服务器并执行一个命令。

当我这样做时,我经常(但并非总是)在尝试从一台服务器 ssh 到另一台服务器时收到此异常。这可能是什么原因,如何解决?任何帮助都可能很棒。提前致谢!

jcraft.jsch.JSchException: verify: false 
     at jcraft.jsch.Session.connect(Session.java:309) 
     at jcraft.jsch.Session.connect(Session.java:162)

【问题讨论】:

我们会调查这个问题。 我在 v.0.1.54 上的测试代码出现问题。等待答复:***.com/questions/50300995/… 【参考方案1】:

我在 Windows 64 位上使用 Java 1.7.0_07 以及 Ant 1.7.1 和 jsch-0.1.44.jar 时遇到了同样的问题。还使用 Ant 1.9.0-alpha 和 jsch-0.1.49。 我已经在tracker of jsch at sourceforge 上报告了这个问题。

有人使用 Ivy、jsch 和 Java 1.7 IVY-1374

提出了类似的错误报告

gradle 的用户也报告了与 gradle-ssh-plugin 问题 11 相同的情况。

【讨论】:

Atsuhiko Yamanaka 写道: Java7u6(及更高版本)中包含的 JCE 似乎突然改变了它的行为。请尝试以下版本,jcraft.com/jsch/jsch-0.1.50-rc1.zip 我们已经确认此版本可以在 Java7u15 上建立 10,000 个连接而不会出现“验证:错误”错误。【参考方案2】:

jsch 0.1.50 已经发布,它修复了这个问题。

jsch的下载页面是http://www.jcraft.com/jsch/

【讨论】:

JSch 0.1.50 解决了将近一年,但现在问题再次出现。即使是 JSch 0.1.51 在大约 500 次 SSH 执行中也会出现一次“验证错误”。还有其他人有这个问题吗? 我们在使用 0.1.50 时也遇到了问题。 使用 Jsch 0.1.51 和 Java 1.7_13 这对我来说也是一个问题,所以如果有人有任何解决方法的想法,欢迎他们 即使在使用最新版本的 Jsch (0.1.54) 时我也有这个问题。 JSch 是一个非常混乱的库,带有一个不合理的 API。我希望有更好的选择。【参考方案3】:

问题依旧,其他2个答案是对的。

1) 0.1.49之前的版本存在bug 在 0.1.49 版本理论上是固定的 here 是更改日志

2) 在 java 1.7 和 jsch 之间存在交互,并且在这种情况下会出现错误

它一直发生在我身上。我相信这是因为某些插件没有更新它们的依赖项,并且它们包含的 jsch 低于 0.1.50。

IE:ssh 凭证插件 https://github.com/jenkinsci/ssh-credentials-plugin

我添加了一个拉取请求来更改依赖项,但他们还没有回答。

【讨论】:

修复实际上是在 0.1.51 而不是 0.1.50,我猜他们的 changlog 令人困惑的措辞是罪魁祸首:“自 0.1.50 版以来的变化”意味着 0.1.51【参考方案4】:

@antoine 提到的修复实际上是在 0.1.51 而不是 0.1.50,我猜 jsch changlog's 令人困惑的措辞是罪魁祸首:“自 0.1.50 版以来的变化”意味着 0.1.51

下一页“[JSch-users] ANNOUNCE: JSch 0.1.51”应该更清楚 https://sourceforge.net/p/jsch/mailman/message/32115165/

上面写着

JSch 0.1.51 已发布。可通过http://sourceforge.net/projects/jsch/files/jsch/0.1.51/jsch-0.1.51.zip/download获得 它的 md5sum 是 89d0ff6d36040622da0a482e51d87725 你可以得到它 jar 文件格式的字节码在http://sourceforge.net/projects/jsch/files/jsch.jar/0.1.51/jsch-0.1.51.jar/download 它的 md5sum 是 de3a2b0d03295f167fea1904939443cf

自 0.1.50 版以来的变化: - 错误修正:“验证:假”的再现性。固定的。 数十万个连接导致了该异常。

【讨论】:

以上是关于SSH 使用 jschexception verify false 有时会失败的主要内容,如果未能解决你的问题,请参考以下文章

JSchException:算法协商失败

com.jcraft.jsch.JSchException: UnknownHostKey

com.jcraft.jsch.JSchException: Algorithm negotiation fail解决

com.jcraft.jsch.JSchException: Algorithm negotiation fail

com.jcraft.jsch.JSchException: Session.connect: java.io.IOException: End of IO Stream Read

并发下sftp连接报错——com.jcraft.jsch.JSchException: connection is closed by foreign host