我正在尝试创建一个web应用程序,它将检查几个服务状态,服务器状态等。我发现这个http://www.jcraft.com/jsch/似乎是相当不错的ssh java实现。但每次我登录服务器时,系统都会提示我确认RSA密钥指纹,如下所示:

我如何才能覆盖它,在没有任何提示的情况下始终确认是?我想要删除整个swing部分,我想让它不需要任何交互,就像我从jscraft.com上提供的示例中提取的示例代码:
http://www.jcraft.com/jsch/examples/Exec.java
一般来说,我对swing和java不是很熟悉。
发布于 2011-01-13 21:34:01
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);
}发布于 2011-01-13 21:22:05
您必须了解为什么会弹出此消息。
SSH是一种安全服务,这意味着客户端的身份和服务器的身份都是有保证的。为了保证您确实到达了您想要访问的服务器(对于如何在您不知情的情况下连接到错误的服务器,google "DNS缓存中毒“),客户端显示收到的服务器名称和指纹。这些值标识服务器。您应该通过安全通道(例如,通过与服务器管理员的电话)比较指纹来查看这是否实际上是您在服务器上生成的指纹。
话虽如此,通常的SSH客户端会保存您接受指纹/服务器名称的决定,并且不会再次询问。看起来你的客户没有。因此,您可以选择更改源代码(如果它是在开放许可下授权的),或者找到一种方法,在出现这个问题时自动按下"Yes“(这可以通过Autoit 3这样的工具包来实现,它的脚本非常简短)。
发布于 2011-01-13 21:19:35
查看http://sourceforge.net/projects/sshtools/
https://stackoverflow.com/questions/4680448
复制相似问题