테스트 SFTPServer를 구현하기 위해 Apache Mina SSHD를 사용하고 있습니다. 필자는 간단한 암호 인증을 위해 일을 처리 할 수 있었지만 PublicKey 인증을 위해 구성 할 수는 없습니다. 다음과 같이 내 SFTP 클라이언트 모든 작품 사용하여 파일을 얻을 때 나는 그러나, 다음과 같이Apache Mina를 사용하여 SFTP 테스트 서버용 PublicKey 인증을 구현하려고합니다. 그러나 Authenticate 메소드가 호출되지 않습니다.
public class SimpleKeyAuthenticator implements PublickeyAuthenticator {
@Override
public boolean authenticate(String username, PublicKey key, ServerSession session) {
System.out.println("In authenticate");
return false;
}
}
내 서버 구현은,
...
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();
}
을 PublickeyAuthenticator 인터페이스를 구현했습니다. 항상 false를 반환하는 경우 authenticate 메소드가 실패 할 것으로 예상됩니다. KeyPairProvider를 설정하여 PEMGeneratorHostKeyProvider 및 SimpleGeneratorHostKeyProvider를 모두 사용하려고했습니다. 또한 SimpleKeyAuthenticator 클래스를 사용하도록 PublicKeyAuthenticator를 설정했습니다. 콘솔 출력을 볼 때 '인증 있음'이 표시되지 않으므로 Authenticate가 호출되지 않습니다. 누군가 내가 놓친 것에 나를 가리켜 주시겠습니까? 어떤 도움을 주셔서 감사합니다.
안부, 행 아래 마크