Java ssh客户端

时间:2011-01-13 13:15:15

标签: java swing ssh

我正在尝试创建一个Web应用程序,它将检查多个服务状态,服务器统计信息等。我发现这个http://www.jcraft.com/jsch/似乎是非常好的ssh java实现。但每次我登录服务器时,都会提示我确认RSA密钥指纹:

alt text

我怎样才能覆盖它,总是在没有任何提示的情况下确认是?我想删除整个swing部分,我想在没有任何交互的情况下进行此操作,就像我从jscraft.com上提供的示例中获取的示例代码:

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

我不熟悉swing和一般的java。

3 个答案:

答案 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)