Обход или принудительная аутентификация сеанса с помощью Jsch

Я использую com.jcraft.jsch.JSch для создания SFTP-соединения.

Есть ли способ обойти / пропустить предупреждение о подлинности, которое появляется, когда подлинность соединения не может быть установлена?

Вот подробнее:

Мой код выглядит примерно так:

Session session = jsch.getSession(user, host, port);
UserInfo ui = new MyUserInfo();
session.setUserInfo(ui);
session.connect();

Когда вызывается строка session.connect();, я получаю всплывающее окно с текстом:

The authenticity of host <MY HOST> can't be established.
...
Are you sure you want to continue connecting?
[No] [Yes]

Есть ли способ программно обойти/пропустить это всплывающее окно и принять соединение?


person FilmiHero    schedule 07.02.2013    source источник


Ответы (2)


Взгляните на эти примеры из Jsch: http://www.jcraft.com/jsch/examples/Exec.java.html http://www.jcraft.com/jsch/examples/Shell.java.html Вы заметите, что оба они создают собственный класс UserInfo и передают его объекту сеанса с помощью session.setUserInfo(UserInfo ui);.

Чтобы избежать этого всплывающего окна, нужно передать свой собственный объект UserInfo. Вы можете сделать это, расширив класс UserInfo и переопределив функцию promptYesNo, например так:

public boolean promptYesNo(String str){ return true; }

Обратите внимание, что все функции, имена которых начинаются со слова «подсказка», используются для запроса информации у пользователя во всплывающем диалоговом окне. Вы можете переопределить эти функции, чтобы передавать информацию другим способом.

person Jon7    schedule 07.02.2013

Я знаю, что эта ветка очень старая и не требует ответа, если она уже решена, но неделю назад я тоже работал над приложением, у которого было аналогичное требование.

То, что сказал Jon7, было правильным; Добавьте к этому и другой способ, то есть без расширения какого-либо класса.

Session session = jsch.getSession(user, host, port);
...
Properties prop = new Properties();
prop.setProperty("StrictHostKeyChecking", "no");
session.setConfig(prop);
session.connect();

Просто еще один способ, который может помочь другим :)

С уважением,

icr

person icr    schedule 14.08.2013