采用JSch来进行实现,核心jar(其他jar放在最后):
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
一、建立连接
JSch 是通过session来建立连接的,而session是通过JSch 对象来生成session的所以我们首先创建JSch
JSch jsch = new JSch(); Session session = jsch.getSession(userName, host, port);
然后设置session的参数:
//设置密码
session.setPassword(password);
//连接时不进行公钥确认,如果第一次登陆会让你确定是否接受公钥,改配置跳过这一步
session.setConfig("StrictHostKeyChecking","no");
//设置超时时间
session.setTimeout(6000);
//连接
session.connect();
二、发送指令
//发送指令
//简历命令管道,有ChannelExec 模式和ChannelShell模式,可以自行百度了解异同
ChannelExec exec = (ChannelExec) session.openChannel("exec");
//获取输入流并发送命令
InputStream in = exec.getInputStream();
exec.setCommand("date"); // date为linux执行的命令
exec.connect();
//读取输出结果
String s = IOUtils.toString(in, "UTF-8");
System.out.println("结果:"+s);
in.close();
三、完整代码:
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import java.io.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class SSHTest {
public void connectionLinux() throws JSchException, IOException {
//建立连接
String host="47.107.XXX.XXX";
int port=22;
String userName="root";
String password="XXXXXXXX";
JSch jsch = new JSch();
Session session = jsch.getSession(userName, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking","no");
session.setTimeout(6000);
session.connect();
//建立连接结束
//发送指令
ChannelExec exec = (ChannelExec) session.openChannel("exec");
//结果整体输出
// InputStream in = exec.getInputStream();
// exec.setCommand("ls;cd /;ls"); //多个命令以;分割
// exec.connect();
// String s = IOUtils.toString(in, "UTF-8");
// System.out.println("结果:" + s);
// in.close();
//结果逐行输出
BufferedReader input = new BufferedReader(new InputStreamReader(exec.getInputStream()));
exec.setCommand("ls;cd /;ls");
String line;
while ((line = input.readLine()) != null)
{
System.out.println("结果:" + line);
}
input.close();
// 关闭通道
exec.disconnect();
//关闭session
session.disconnect();
}
}
四、完整jar:
<dependencies>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.12</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
</dependencies>