java - SFTP 服务器在 Apache Mina SSHD 中设置用户/密码

标签 java sftp apache-mina

我正在使用这个例子,取自 Java SFTP Server Library? :

public void setupSftpServer(){
    SshServer sshd = SshServer.setUpDefaultServer();
    sshd.setPort(22);
    sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider("hostkey.ser"));

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

    sshd.setCommandFactory(new ScpCommandFactory());

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

    try {
        sshd.start();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

但我需要为 SFTP 服务器设置用户登录名和密码。我怎样才能做到这一点? 谢谢

最佳答案

new UserAuthNone.Factory()更改为new UserAuthPassword.Factory(),然后实现并注册PasswordAuthenticator对象。它的 authenticate 方法应该为有效的用户名和密码参数返回 true

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

sshd.setPasswordAuthenticator(new PasswordAuthenticator() {
    public boolean authenticate(String username, String password, ServerSession session) {
        return "tomek".equals(username) && "123".equals(password);
    }
});

关于java - SFTP 服务器在 Apache Mina SSHD 中设置用户/密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17925347/

相关文章:

java - 对 Apache Mina 总带宽进行基准测试

java - Spring 入站 channel 适配器 - 如何自动删除超过 10 天的文件夹和文件

java - 如何正确处理 Java/JDBC 中的 InnoDB 死锁?

java - 外部java程序: Handle SIGTERM

linux - 将多个文件从一个目录移动到远程 sftp 服务器上的另一个目录

python - pysftp -- paramiko SSHException,来自服务器的错误主机 key

hadoop - 如何在ftp源flume代理中保留文件的原始基本名称

java - 构建具有大量数据通信的系统的最佳方法是什么?

java - java中的事件监听器

java - 集群中 2 个节点之间的通信