2013-02-07 22 views
2

我正在使用com.jcraft.jsch.JSch創建SFTP連接。使用Jsch繞過或強制會話身份驗證

當連接的真實性無法建立時,是否有方法繞過/跳過彈出的真實性警告?

這裏的更多詳細信息:

我的代碼看起來有點像這樣:

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

看看這些例子從Jsch:http://www.jcraft.com/jsch/examples/Exec.java.htmlhttp://www.jcraft.com/jsch/examples/Shell.java.html你會發現,他們都創建一個自定義UserInfo類,它與session.setUserInfo(UserInfo ui);傳遞給會話對象。

避免彈出窗口的方法是通過您自己的UserInfo對象。您可以通過擴展UserInfo類並覆蓋promptYesNo功能,這樣做:

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

注意,所有的名字開始與詞功能「提示」用於提示用戶有信息彈出對話框。您可以重寫這些函數來以其他方式傳遞信息。

+0

輝煌!那就是訣竅。 – FilmiHero

3

我知道這個線程很老,如果它已經解決了就不需要任何回覆,但是一個星期前我也在研究一個類似需求的應用程序。

Jon7說的是對的;除此之外,還有一種不同的方式,即不擴展任何類別。

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

只是另一種方式,可以幫助別人:)

問候,

ICR