Java Apache Mina Sshd SetPasswordAuthenticator未执行

Java Apache Mina Sshd SetPasswordAuthenticator未执行,java,sftp,winscp,apache-mina,sshd,Java,Sftp,Winscp,Apache Mina,Sshd,我已经安装了Apache Mina Sshd SFTP服务器,并在其中添加了一些用户权限。为了进行测试,我使用Winscp,但我可以在不键入正确密码和用户名的情况下连接服务器。似乎从未调用过SetPasswordAuthenticator方法。因此,我想知道如何为我的Apache Mina Sshd设置用户名和密码用于启动安全服务器的SFTP服务器 我的服务器代码 sshd = SshServer.setUpDefaultServer(); sshd.setPort(2525);

我已经安装了Apache Mina Sshd SFTP服务器,并在其中添加了一些用户权限。为了进行测试,我使用Winscp,但我可以在不键入正确密码和用户名的情况下连接服务器。似乎从未调用过SetPasswordAuthenticator方法。因此,我想知道如何为我的Apache Mina Sshd设置用户名和密码用于启动安全服务器的SFTP服务器

我的服务器代码

sshd = SshServer.setUpDefaultServer();
    sshd.setPort(2525);
    sshd.setHost("172.xx.xx.xx");
    sshd.setPasswordAuthenticator(new MyPasswordAuthenticator());
    sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider());
    sshd.setSubsystemFactories(Arrays.<NamedFactory<Command>> asList(new SftpSubsystem.Factory()));

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

    sshd.setCommandFactory(new ScpCommandFactory());

    sshd.setKeyExchangeFactories(Arrays
            .<NamedFactory<KeyExchange>> asList(new DHG1.Factory()));
    sshd.setCommandFactory(new ScpCommandFactory());
    sshd.setFileSystemFactory(new VirtualFileSystemFactory("C:/root"));
}

Maven依赖

<dependency>
        <groupId>org.apache.mina</groupId>
        <artifactId>mina-core</artifactId>
        <version>2.0.9</version>
    </dependency>
    <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>0.14.0</version>
    </dependency>

org.apache.mina
米纳岩芯
2.0.9
org.apache.sshd
sshd sftp
0.11.0
org.apache.sshd
固态硬盘磁芯
0.14.0

我是Apache Mina Sshd新手。感谢您的帮助。

最后我发现了错误所在。通过删除下面的代码片段,您可以在服务器上执行Sshd.setPasswordAuthenticator

List<NamedFactory<UserAuth>> userAuthFactories = new  ArrayList<NamedFactory<UserAuth>>();
userAuthFactories.add(new UserAuthNone.Factory());
sshd.setUserAuthFactories(userAuthFactories);
List userauthfactures=new ArrayList();
添加(新的UserAuthNone.Factory());
sshd.setUserAuthFactorys(UserAuthFactorys);
注意:如果您需要更高的安全性,您可以使用上面的代码片段并进行适当的实现,但只需添加
sshd.setPasswordAuthenticator(新的MyPasswordAuthenticator())您可以为服务器设置基本密码身份验证

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