我正在使用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]
有没有办法以编程方式绕过/跳过此弹出窗口并接受连接?
答案 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