我正在尝试创建一个Web应用程序,它将检查多个服务状态,服务器统计信息等。我发现这个http://www.jcraft.com/jsch/似乎是非常好的ssh java实现。但每次我登录服务器时,都会提示我确认RSA密钥指纹:
我怎样才能覆盖它,总是在没有任何提示的情况下确认是?我想删除整个swing部分,我想在没有任何交互的情况下进行此操作,就像我从jscraft.com上提供的示例中获取的示例代码:
http://www.jcraft.com/jsch/examples/Exec.java
我不熟悉swing和一般的java。
答案 0 :(得分: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 :(得分:1)
您必须了解弹出此消息的原因。
SSH是一种安全服务,这意味着可以保证客户端的身份和服务器的身份。为了确保您实际到达了您想要访问的服务器(在您不知情的情况下如何连接到错误的服务器,谷歌“DNS缓存中毒”),客户端显示收到的服务器名称和指纹。这些值标识服务器。您应该通过安全通道(例如通过电话与服务器管理员)比较指纹来查看您实际上是在服务器上生成的指纹。
话虽如此,通常的SSH客户端会保留您接受指纹/服务器名称的决定,不要再问。看来你的客户没有。因此,您可以选择更改源代码(如果它是在开放许可下获得许可),或者找到一种方法在弹出此问题时自动按“是”(这可以通过使用非常短的脚本的Autoit 3等工具包实现)。
答案 2 :(得分:0)