我正在使用这个例子,取自 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/