Sto utilizzando Apache Mina SSHD per implementare un SFTPServer di test. Sono stato in grado di ottenere le cose lavorando per l'autenticazione della password semplice, tuttavia non sono in grado di configurare le cose per l'autenticazione PublicKey. Ho un implementato l'interfaccia PublickeyAuthenticator come segue,Tentativo di implementare l'autenticazione PublicKey per il server di prova SFTP utilizzando Apache Mina. Tuttavia, il metodo Authenticate non viene chiamato
public class SimpleKeyAuthenticator implements PublickeyAuthenticator {
@Override
public boolean authenticate(String username, PublicKey key, ServerSession session) {
System.out.println("In authenticate");
return false;
}
}
mia implementazione del server è la seguente,
...
sshd = SshServer.setUpDefaultServer();
sshd.setPort(2222);
//sshd.setPort(config.getSFTPPort());
//sshd.setKeyPairProvider(new
sshd.setKeyPairProvider(new PEMGeneratorHostKeyProvider("hostkey.pem"));
//sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider());
sshd.setPublickeyAuthenticator(new SimpleKeyAuthenticator());
sshd.setFileSystemFactory(new SimpleFileSystemFactory());
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);
sshd.setSessionFactory(new SimpleSessionFactory(handler));
try {
sshd.start();
} catch (Exception e) {
e.printStackTrace();
}
Tuttavia quando cerco di ottenere un file usando il mio client SFTP tutto funziona. Mi aspetto che il metodo di autenticazione fallisca dato che restituisce sempre false. Ho provato a impostare KeyPairProvider per utilizzare sia PEMGeneratorHostKeyProvider che SimpleGeneratorHostKeyProvider. Ho anche impostato PublicKeyAuthenticator per utilizzare la mia classe SimpleKeyAuthenticator. Nota, quando guardo l'output della console non vedo mai "In authenticate", quindi so che Authenticate non viene mai chiamato. Qualcuno potrebbe per favore indicarmi cosa mi è mancato? Qualsiasi aiuto è apprezzato.
saluti, Mark