2013-07-29 12 views
10

Używam tego przykładu, wykonane z Java SFTP Server Library?:SFTP server set user/hasło w Apache Mina sshd

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(); 
    } 
} 

Ale muszę ustawić logowanie użytkownika i pw dla serwera SFTP. Jak mogę to zrobić? Dzięki

+0

czy masz szczęście? Brakuje dokumentacji. Proszę, pomóżcie mi podzielić się swoimi doświadczeniami. –

+0

Nie ma szczęścia, wciąż czeka na odpowiedź. – Alvins

+0

Utworzyłem odpowiedź, być może może ona pomóc: http://stackoverflow.com/questions/18694108/apache-mina-sshd-problems-z -autoryzowaniem-modaniem-połączeniem-do-serwera/21553897#21553897 – Chris

Odpowiedz

10

Zmień new UserAuthNone.Factory() na new UserAuthPassword.Factory(), a następnie zaimplementuj i zarejestruj obiekt PasswordAuthenticator. Jego metoda authenticate powinna zwrócić true dla prawidłowych parametrów nazwy użytkownika i hasła.

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); 
    } 
}); 
+0

bardzo mi pomogło, dziękuję! – Chris