gpt4 book ai didi

java - Apache mina-sshd ssh 客户端总是打印 EdDSA provider not supported

转载 作者:行者123 更新时间:2023-12-05 00:44:49 25 4
gpt4 key购买 nike

我正在使用 Apache sshd 的 ssh 客户端。每当我与目标 ssh 服务器建立连接时,我都会在日志中看到这一点。连接有效,但有什么问题吗?我该如何解决?

异常看起来像:

(SshException) to process: EdDSA provider not supported

最佳答案

如何解决

要解决此问题,请添加依赖项 net.i2p.crypto:eddsa。 Bouncy caSTLe 不提供 EdDSA 的实现。例如在 Maven 中添加这个依赖:

   <dependency>
<groupId>net.i2p.crypto</groupId>
<artifactId>eddsa</artifactId>
<version>0.3.0</version>
</dependency>

不修复的影响

如果您不解决此问题,您将无法验证主机 key 。我的测试没有受到影响,因为我还没有验证主机 key 。但是,一旦部署到生产环境,我就会受到影响,因为必须验证主机 key 。

详情

在 Apache mina-sshd 源代码中,类 SecurityUtils揭示了问题。该类将 EdDSA 的提供者硬编码为 EdDSASecurityProviderRegistrar :

public static final List<String> DEFAULT_SECURITY_PROVIDER_REGISTRARS = Collections.unmodifiableList(
Arrays.asList(
"org.apache.sshd.common.util.security.bouncycastle.BouncyCastleSecurityProviderRegistrar",
"org.apache.sshd.common.util.security.eddsa.EdDSASecurityProviderRegistrar"));

浏览EdDSASecurityProviderRegistrar你看到它期望类 net.i2p.crypto.eddsa.EdDSAKey 存在:

@Override
public boolean isSupported() {
Boolean supported;
synchronized (supportHolder) {
supported = supportHolder.get();
if (supported != null) {
return supported.booleanValue();
}

ClassLoader cl = ThreadUtils.resolveDefaultClassLoader(getClass());
supported = ReflectionUtils.isClassAvailable(cl, "net.i2p.crypto.eddsa.EdDSAKey");
supportHolder.set(supported);
}

return supported.booleanValue();
}

快速谷歌搜索,您会看到 net.i2p.crypto.eddsa.EdDSAKey 由库 net.i2p.crypto:eddsa 提供。

关于java - Apache mina-sshd ssh 客户端总是打印 EdDSA provider not supported,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65566138/

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