使用Jsch绕过或强制进行会话身份验证

时间:2013-02-07 21:11:08

标签: java sftp 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]

有没有办法以编程方式绕过/跳过此弹出窗口并接受连接?

2 个答案:

答案 0 :(得分:4)

看看Jsch中的这些示例:http://www.jcraft.com/jsch/examples/Exec.java.html http://www.jcraft.com/jsch/examples/Shell.java.html您会注意到它们都创建了一个自定义UserInfo类,并将其传递给{{1 }}。

避免弹出窗口的方法是传入您自己的session.setUserInfo(UserInfo ui);对象。您可以通过扩展UserInfo类并覆盖UserInfo函数来完成此操作,如下所示:

promptYesNo

请注意,名称以“prompt”开头的所有函数都用于通过弹出对话框提示用户输入信息。您可以覆盖这些函数以便以其他方式传递信息。

答案 1 :(得分:3)

我知道这个帖子已经很老了,如果它已经解决了就不需要任何回复,但是一周后我也在研究一个有类似要求的应用程序。

Jon7所说的是对的;除此之外,还有一种不同的方式,即不扩展任何类。

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

另一种可以帮助他人的方式:)

的问候,

ICR