早期的ganymed-ssh2包也可以实现远程调研linux shell 命令,但是这个包最新版本是2014年之后,就没有更新了,发现linux 操作系统安装 open-ssh 8.5及更高级版本,就一直提示连接失败.(可以使用jsch 最新版本更新到2018年,网上demo 很多 ,目前测试可以使用,后续可能出现ganymed-ssh2 相同问题协议不支持,无法连接情况,sshd-core 是apache-mina 的项目一直在更新,推荐使用)
package ganymed_ssh2;
import ch.ethz.ssh2.ChannelCondition;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
import java.io.InputStream;
import java.io.PrintWriter;
import java.nio.charset.Charset;
public class Ssh2Util {
private Connection conn;
private String charset = Charset.defaultCharset().toString();
/**
* 连接到指定的IP
*
* @param user
* @param passwd
* @param ip
* @param port
* @return
* @throws Exception
*/
public boolean connect(String user, String passwd, String ip, int port) throws Exception {
this.conn = new Connection(ip, port);
this.conn.connect();
return this.conn.authenticateWithPassword(user, passwd);
}
/**
* 执行相关的命令
* 非交互式
*
* @param command
* @param user
* @param passwd
* @param ip
* @param port
* @return
* @throws Exception
*/
public String execCmd(String command, String user, String passwd, String ip, int port) throws Exception {
InputStream stdOut = null;
InputStream stdErr = null;
StringBuilder buf = new StringBuilder();
try {
System.out.println("连接地址:" + ip + ":" + port);
buf.append("\n连接地址:" + ip + ":" + port + "\n");
if (connect(user, passwd, ip, port)) {
Session session = this.conn.openSession();</