2011-01-13 112 views
1

我想创建一个Web应用程序,它将检查几个服务状态,服务器统计等我发现这http://www.jcraft.com/jsch/似乎是相当不错的SSH实施。但每次我在服务器登录时提示我确认RSA密钥指纹是这样的:Java的SSH客户端

alt text

我怎么可以重写此,始终是确认没有任何提示?我想删除整个挥杆的一部分,我想使这个没有任何互动,这样的例子代码,我从例子中可以采取对jscraft.com:

http://www.jcraft.com/jsch/examples/Exec.java

我不那么熟悉的挥杆并与一般的java。

回答

3
public class ManoUserInfo implements UserInfo { 

String passwd; 

public void setPassword(String pass) { 
    passwd = pass; 
} 

@Override 
public String getPassphrase() { 
    return null; 
} 

public String getPassword() { 
    return passwd; 
} 

public boolean promptPassword(String arg0) { 
    return true; 

} 

public boolean promptPassphrase(String arg0) { 
    return true; 
} 
//this method responsible for that message, so just make it return true 
public boolean promptYesNo(String arg0) { 
    // Object[] options = {"yes", "no"}; 
    /* int foo = JOptionPane.showOptionDialog(null, 
      arg0, 
      "Warning", 
      JOptionPane.DEFAULT_OPTION, 
      JOptionPane.WARNING_MESSAGE, 
      null, options, options[0]);*/ 
    return true; 
} 

public void showMessage(String message) { 
    JOptionPane.showMessageDialog(null, message); 
} 
1

您必须明白为什么会弹出此消息。

SSH是一种安全服务,意味着客户端的身份和服务器的身份得到保证。为了保证你真的到达了你想要访问的服务器(在你不知情的情况下连接到错误的服务器的可能性,谷歌的“DNS缓存中毒”),客户端显示接收到的服务器名称和指纹。这些值标识服务器。你应该看看这实际上是你通过安全通道比较指纹(例如通过电话与服务器管理员)在服务器上生成的指纹。

话虽如此,通常的SSH客户端会保存您接受指纹/服务器名称的决定,而不会再询问。看来你的客户没有。因此,您可以选择更改源代码(如果它是在开放许可下获得许可的),或者找到一种方法在弹出此问题时自动按下“是”(这可以通过工具包如Autoit 3使用非常短的脚本来实现)。

+0

`或找到一种方法来自动按“是”每当这个问题弹出(这可以用很短的脚本像AutoIt的3工具箱实现).`这是我很感兴趣的部分,我阅读你的文章中的所有其他内容,这就是为什么我要求一个答案我不知道该怎么做 – London 2011-01-13 13:31:34