不显示删除回复显示所有回复显示星级回复显示得分回复 java使用ganymed-ssh2远程连接Linux报IO异常,请帮忙看看原因
package health_checker;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
public class JaveSSH
{
public static void main(String[] args)
{
String hostname = "50.130.2.3"; //要登陆目标主机
String username = "root"; //登陆用的用户名
String password = "root"; //登陆用到的密码
try
{
/* Create a connection instance */
Connection conn = new Connection(hostname);
/* Now connect */
conn.connect();
/* Authenticate */
boolean isAuthenticated = conn.authenticateWithPassword(username,
password);
if (isAuthenticated == false) {
throw new IOException("Authentication failed.");
}
/* Create a session */
Session sess = conn.openSession();
//sess.execCommand("uname -a && date && uptime && who");
sess.execCommand("ps aux ");
System.out.println("Here is some information about the remote host:");
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
while (true)
{
String line = br.readLine();
if (line == null) {
break;
}
System.out.println(line);
}
/* Show exit status, if available (otherwise "null") */
System.out.println("ExitCode: " + sess.getExitStatus());
/* Close this session */
sess.close();
/* Close the connection */
conn.close();
}
catch (IOException e)
{
e.printStackTrace(System.err);
}
}
}
==================================
系统报错
java.io.IOException: Password authentication failed.
at ch.ethz.ssh2.auth.AuthenticationManager.authenticatePassword(AuthenticationManager.java:300)
at ch.ethz.ssh2.Connection.authenticateWithPassword(Connection.java:309)
at health_checker.JaveSSH.main(JaveSSH.java:43)
Caused by: java.io.IOException: Authentication method password not supported by the server at this stage.
at ch.ethz.ssh2.auth.AuthenticationManager.authenticatePassword(AuthenticationManager.java:270)
... 2 more
--------------------编程问答-------------------- 参考:http://www.ganymed.ethz.ch/ssh2/FAQ.html
Many default SSH server installations are configured to refuse the authentication type "password". Often, they only accept "publickey" and "keyboard-interactive". You have different options:
Enable password authentication. E.g., in case of OpenSSH on Fedora, edit /etc/sshd/sshd_config and change the value of "PasswordAuthentication" to "yes", then send a HUP signal to the daemon so that it re-reads its configuration.
Switch to public-key authentication. Probably the best choice.
Try to use keyboard-interactive authentication. If you have a GUI that interacts with a user, then this is doable (check out the SwingShell.java example).
In general it is a good idea to call either Connection.getRemainingAuthMethods() or Connection.isAuthMethodAvailable() before using a certain authentication method. --------------------编程问答--------------------
ava.io.IOException:密码验证失败。
原因是:java.io.IOException:密码验证方法不被服务器支持在这个阶段。
看看你服务器支持什么模式的密码验证。 SSL????没用过linux --------------------编程问答-------------------- 路 过 --------------------编程问答-------------------- 如何解决呢?各位大侠 --------------------编程问答-------------------- 如何切换到这种模式呢
Switch to public-key authentication. Probably the best choice.
--------------------编程问答-------------------- 明显是密码错误了么
你用ssh连接工具用root用户root密码能登陆进去么? --------------------编程问答-------------------- 看看这篇文章http://zoouyong20.iteye.com/blog/1122323 --------------------编程问答-------------------- 解决方法:
vi /etc/sshd/sshd_config
PasswordAuthentication yes
重启服务:
linux:
/etc/init.d/sshd restart
freebsd:
/etc/rc.d/sshd restart
补充:Java , Web 开发