2016-03-29 11 views
2

Сценарий заключается в том, что мне нужно написать тесты для приложения, которое передает SFTP-файлы, и мне нужен в встроенном SFTP-сервере с встроенным SFTP-сервером, чтобы я мог проверить, что передача файлов выполняется нормально со встроенным/на сервере памяти с аутентификацией файла с приватным ключом (.pem).В памяти/встроенном SFTP-сервере для проверки с помощью проверки подлинности с использованием частного ключа в Java

я прострелил через кишки интернета ближе я пришел был Apache Mina Server as discussed in this S.O. question

В настоящее время я использую проверку подлинность имени пользователя и пароля, как показано ниже:

SshServer sshd = SshServer.setUpDefaultServer(); 
sshd.setPort(22999); 

sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider()); 
sshd.setPasswordAuthenticator(new PasswordAuthenticator() { 

    public boolean authenticate(String username, String password, 
           ServerSession session) { 
     // TODO Auto-generated method stub 
     return true; 
    } 
}); 

Я пытался найти способ реализации частных но, похоже, существует только один аутентификатор, но это аутентификатор открытого ключа, как показано ниже:

public void setPublickeyAuthenticator(PublickeyAuthenticator publickeyAuthenticator) { 
    this.publickeyAuthenticator = publickeyAuthenticator; 
} 

Is th как способ реализовать аутентификатор частного ключа с Apache Mina? или если это невозможно, есть ли какой-нибудь другой mock-сервер SFTP, который я мог бы использовать для своего сценария тестирования?

ответ

1

Вы действительно ищете аутентификатор открытого ключа .

Клиент/пользователь аутентифицируется с помощью открытого ключа. Сервер никогда не видит закрытый ключ.


Таким образом, вы реализовать PublickeyAuthenticator interface, чтобы проверить, если PublicKey key аргумент authenticate method соответствует общественной части пары ключей, которую вы используете в клиенте для проверки подлинности.

Вы можете начать использовать с AuthorizedKeysAuthenticator implementation, который использует конфигурационный файл OpenSSH .ssh/authorized_keys.

+0

, так что вы имеете в виду, что я мог бы использовать логин jsch с «закрытым ключом», и если я добавлю соответствующий открытый ключ к известным ключам сервера, тогда это будет трюк? – Anirudh

+0

клиент аутентифицируется с помощью «закрытого ключа», а не с открытым ключом. IMO – Anirudh

+0

. На противоположной стороне аутентификации просматривается только открытый ключ. Таким образом, на стороне клиента вы видите общедоступную часть пары ключей сервера (известный как ключ хоста). На стороне сервера сервер видит только открытую часть пары ключей пользователя. Конечно, у пользователя должен быть и закрытый ключ, но вы не можете проверить закрытый ключ на сервере, так как закрытый ключ не отправляется на сервер (поэтому он частный). –

 Смежные вопросы

  • Нет связанных вопросов^_^