2015-12-17 2 views
2

У меня есть Linux-телефон с включенным SSH. Мне нужно подключиться к нему с помощью аутентификации по запросу. Итак, как выглядит этот процесс вручную, например, с помощью PuTTY:Как автоматизировать аутентификацию запроса-ответа с использованием Java

  1. Подключитесь к телефону, используя IP и порт.

  2. Консоль показывает «login as:» -> Введите имя пользователя.

  3. Консоль показывает:

    Войти как: корабль

    Задача: 547-04302
    ID продукта: 7000315107

    Ответ:

  4. Мне нужно скопировать Задайте, получите ответ от другого сервера, используя Challenge, и введите Ответ в консоли.

Как я могу это сделать, используя Java и некоторые библиотеки для SSH (я пробовал JSch, но нет методов для вызова-ответа)? Мне нужно только написать Challenge в String, после чего введите Response, используя ответ String.

Спасибо за помощь.

ответ

1

Аутентификация запроса-ответа также известна как интерактивная аутентификация с клавиатуры.

И это поддерживается библиотекой JSch.

См. Официальный JSch UserAuthKI example.

В основном вам необходимо реализовать UIKeyboardInteractive interface (вместе с UserInfo interface) и связать реализацию с сеансом, используя Session.setUserInfo.

Чтобы использовать программный ответ на один вызов, просто возьмите вызов из параметра prompt[0]UIKeyboardInteractive.promptKeyboardInteractive method и верните массив элементов с ответом.

+0

Thak вам за ответ. Я не могу использовать методы для общения с пользователем с использованием пользовательского интерфейса или что-то в этом роде. Какие методы в userInfo мне следует использовать, чтобы поймать вызов и написать ответ после этого? –

+0

См. Мой отредактированный ответ. –

+1

Я переписал UserAuthKeyboardInteractive класс в соответствии с моим примером (добавлен код для разбора 'String [] response = new String [prompt.length];' from 'promptKeyboardInteractive' метод и методы для получения ответа с помощью Challenge через Selenium), все работает. Ваш комментарий был полезен для меня, спасибо –

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