首页 文章

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

提问于
浏览
2

我正在使用 com.jcraft.jsch.JSch 来创建SFTP连接 .

是否有办法绕过/跳过无法 Build 连接真实性时弹出的真实性警告?

这里有更多细节:

我的代码看起来有点像这样:

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 回答

  • 3

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

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

  • 4

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

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

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

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

    问候,

    ICR

相关问题