使用ganymed-ssh2>>收到错误“此阶段服务器不支持身份验证方法密码”

时间:2013-11-26 06:22:57

标签: java authentication

我正在使用ganymed-ssh2来执行xml配置文件中提供的命令的远程执行。它适用于大多数服务器,除了我收到以下错误的一些服务器。

  

java.io.IOException:密码验证失败。在   ch.ethz.ssh2.auth.AuthenticationManager.authenticatePassword(AuthenticationManager.java:300)   在   ch.ethz.ssh2.Connection.authenticateWithPassword(Connection.java:309)   在   GenericAccessOnly.GenericAccessOnly.Access(GenericAccessOnly.java:260)   在   GenericAccessOnly.GenericAccessOnly.main(GenericAccessOnly.java:190)   引起:java.io.IOException:验证方法密码不是   在此阶段由服务器支持。在   ch.ethz.ssh2.auth.AuthenticationManager.authenticatePassword(AuthenticationManager.java:270)   ......还有3个

在这方面的任何帮助肯定会有很大的帮助。

此致

1 个答案:

答案 0 :(得分:1)

嗯..这个例外真的不言自明,不是吗?有问题的服务器根本不支持密码验证。您应该实现尝试ganymed-ssh2支持的不同身份验证方法的代码。

ganymed-ssh2中包含示例代码,它解释了如何检查可用的auth方法。例如:

if (connection.isAuthMethodAvailable(getUsername(), "publickey")) {
    System.out.println("--> public key auth method supported by server");
} else {
    System.out.println("--> public key auth method not supported by server");
}
if (connection.isAuthMethodAvailable(getUsername(), "keyboard-interactive")) {
    System.out.println("--> keyboard interactive auth method supported by server");
} else {
    System.out.println("--> keyboard interactive auth method not supported by server");
}
if (connection.isAuthMethodAvailable(getUsername(), "password")) {
    System.out.println("--> password auth method supported by server");
} else {
    System.out.println("--> password auth method not supported by server");
}

以下是examples。看一下SwingShell,它不仅仅使用密码验证。