gpt4 book ai didi

java - "no matching host key type found"- Apache MINA SFTP 服务器

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:22 25 4
gpt4 key购买 nike

我希望使用 Apache MINA 在 Java 中设置一个 SFTP 服务器。

它似乎启动正常,但是当我尝试使用 OpenSSH 客户端连接到它时,我得到:

$ ssh localhost -p 2222
Unable to negotiate with ::1: no matching host key type found. Their offer: ssh-dss
$ ssh -V
OpenSSH_7.1p1, OpenSSL 1.0.2d 9 Jul 2015

Java 应用日志:

! java.lang.IllegalStateException: Unable to negotiate key exchange for server host key algorithms (client: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,ssh-rsa / server: ssh-dss)
! at org.apache.sshd.common.session.AbstractSession.negotiate(AbstractSession.java:1279) ~[sshd-core-1.0.0.jar:1.0.0]

我的 Maven 依赖项是:

<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-sftp</artifactId>
<version>0.11.0</version>
</dependency>

<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-core</artifactId>
<version>1.0.0</version>
</dependency>

我的应用程序启动代码看起来像(从 https://stackoverflow.com/a/8974515/8261 复制)

import org.apache.sshd.common.NamedFactory;
import org.apache.sshd.server.Command;
import org.apache.sshd.server.SshServer;
import org.apache.sshd.server.auth.UserAuth;
import org.apache.sshd.server.auth.UserAuthNoneFactory;
import org.apache.sshd.server.command.ScpCommandFactory;
import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider;
import org.apache.sshd.sftp.subsystem.SftpSubsystem;

private void startSftpServer() throws IOException {
SshServer sshd = SshServer.setUpDefaultServer();
sshd.setPort(2222);
sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(
new File("hostkey.ser")));

List<NamedFactory<UserAuth>> userAuthFactories = new ArrayList<NamedFactory<UserAuth>>();
userAuthFactories.add(new UserAuthNoneFactory());
sshd.setUserAuthFactories(userAuthFactories);

sshd.setCommandFactory(new ScpCommandFactory());

List<NamedFactory<Command>> namedFactoryList = new ArrayList<NamedFactory<Command>>();
namedFactoryList.add(new SftpSubsystem.Factory());
sshd.setSubsystemFactories(namedFactoryList);

sshd.start();
}

如何向服务器添加更多现代主机 key 算法?

最佳答案

这对我有用:

更改 Maven pom.xml 以删除“sshd-sftp”,它现在是“sshd-core”的一部分:

<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-core</artifactId>
<version>1.0.0</version>
</dependency>

添加到“startSftpServer”:

    AbstractGeneratorHostKeyProvider hostKeyProvider =
new SimpleGeneratorHostKeyProvider(SERVER_KEY_FILE.toPath());

hostKeyProvider.setAlgorithm("RSA");
sshd.setKeyPairProvider(hostKeyProvider);

...使用这个库似乎涉及很多猜测,这对于“安全”库来说似乎是可疑的。

关于java - "no matching host key type found"- Apache MINA SFTP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33690689/

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