2

我正在使用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]

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

4

2 回答 2

4

看看 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; }

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

于 2013-02-07T21:21:38.337 回答
3

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

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

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

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

问候,

icr

于 2013-08-14T02:40:15.287 回答