Я пытаюсь настроить ssh-сервер, используя apache mina sshd. Я хочу использовать аутентификацию с открытым ключом, и в основном я хочу знать, как реализовать
Я вижу, что передается еще один открытый ключ. Поэтому я предполагаю, что вы должны сравнить открытый ключ, указанный в параметре, с открытым ключом, который есть у сервера. Но я не знаю, как это сделать.
Я думаю, что нашел ответ в источнике org.apache.sshd.server.auth.UserAuthPublicKey#auth. Этот класс выполняет фактическую аутентификацию с помощью ключа. Думаю, меня смутило название метода - authenticate(). На самом деле происходит следующее:
Сервер запрашивает открытый ключ клиента
Открытый ключ передается PublickeyAuthenticator#authenticate
Все, что вам нужно сделать в authenticate(), это проверить, что это открытый ключ, который вы хотите разрешить.
Если authenticate() возвращает true, то UserAuthPublicKey#auth проверит, подписано ли сообщение закрытым ключом. Если это так, то аутентификация была подтверждена.
Подобно тому, что @northshorefiend упомянул в своем ответе, в этом случае AuthorizedKeysAuthenticator берет открытый ключ, переданный на сервер, и проверяет его на соответствие файлу author_keys new AuthorizedKeysAuthenticator(new File("<Location of authorized_keys file>") . Если указанный открытый ключ существует в файле, он проходит аутентификацию.
Вы можете прочитать более подробную информацию об этом здесь и здесь
personSai Upadhyayulaschedule03.09.2019
comment
Привет, я пробовал это, но я продолжаю получать эту ошибку: test@localhost: Отказано в доступе (клавиатура-интерактивная, общедоступная). Что я делаю не так? Вот как я пытаюсь подключиться: $ sftp -oPort=2222 test@localhost из каталога, где находится мой закрытый ключ
- personDinu Nicolae; 03.07.2020