"没有匹配的主机密钥类型的发现和QUOT; - Apache的MINA SFTP服务器 [英] "no matching host key type found" - Apache MINA SFTP server

查看:505
本文介绍了"没有匹配的主机密钥类型的发现和QUOT; - Apache的MINA SFTP服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望使用Apache MINA建立SFTP服务器Java编写的。

I’m hoping to set up a SFTP server in Java using Apache MINA.

它似乎开始好了,但是当我试图用OpenSSH客户端连接到它,我得到:

It seems to start OK, but when I try to connect to it with an OpenSSH client, I get:

$ 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应用程序日志:

The Java app logs:

! 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依赖是:

My Maven dependencies are:

<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>

我的应用程序启动code样子(从 http://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();
}

我如何增加更多的现代主机密钥算法服务器?

How do I add more modern host key algorithms to the server?

推荐答案

这对我的作品:

更改的Maven的pom.xml删除的sshd-SFTP,也就是现在的sshd的核心部分:

Change Maven pom.xml to remove "sshd-sftp", which is now part of "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);

...似乎有很多涉及到使用这个库,这对于一个安全的lib似乎黑幕猜测。

... there seems to be a lot of guesswork involved in using this library, which seems shady for a "security" lib.

这篇关于&QUOT;没有匹配的主机密钥类型的发现和QUOT; - Apache的MINA SFTP服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆