Apache Mina Sshd SetPasswordAuthenticator 不执行

Apache Mina Sshd SetPasswordAuthenticator Does not Execute

我已经设置了 Apache Mina Sshd SFTP 服务器,我在 it.To 测试中添加了一些用户权限,我使用 Winscp 但我可以连接服务器而无需输入正确的密码,用户 name.It 看起来像 SetPasswordAuthenticator 方法从不 called.So 我想知道如何为我的 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"));

MyPasswordAuthenticator 代码,

public class MyPasswordAuthenticator implements PasswordAuthenticator {

public boolean authenticate(String username, String password, ServerSession session) {
    boolean retour = false;

    if ("user".equals(username) && "123".equals(password)) {
        retour = true;
    }

    return retour;
}

}

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>

我是 Apache Mina 的新手Sshd.Appreciate任何帮助。

最后我找到了它的去向wrong.By删除下面的代码片段你可以在服务器上执行sshd.setPasswordAuthenticator

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

注意:如果您需要更高的安全性,您可以使用上面的代码片段并进行适当的实施,但只需添加 sshd.setPasswordAuthenticator(new MyPasswordAuthenticator()); 您就可以为您的服务器设置基本密码身份验证。