我正在使用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个
在这方面的任何帮助肯定会有很大的帮助。
此致
答案 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,它不仅仅使用密码验证。