Jsch 简介
JSch - Java 安全通道
JSch 是SSH2的纯 Java 实现 。
JSch 允许您连接到 sshd 服务器并使用端口转发、X11 转发、文件传输等,您可以将其功能集成到您自己的 Java 程序中。JSch 是在BSD 风格许可下获得许可的。
官网:http://www.jcraft.com/jsch/
demo地址:http://www.jcraft.com/jsch/examples
引用
下载zip:https://sourceforge.net/projects/jsch/files/jsch/0.1.55/jsch-0.1.55.zip/download
下载jar:https://sourceforge.net/projects/jsch/files/jsch.jar/0.1.55/jsch-0.1.55.jar/download
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
简单demo
import com.jcraft.jsch.*;
import org.apache.commons.io.IOUtils;
import java.util.Properties;
public class Demo {
/* 连接connect */
public static Session(String ip, String userName, String password) {
JSch jsch = new JSch();
//默认端口22
Session session = jsch.getSession(userName, ip, 22);
//ssh 有一个非交互方式登录 StrictHostKeyChecking
//StrictHostKeyChecking=no 最不安全的级别,当然也没有那么多烦人的提示了,相对安全的内网测试时建议使用。
Properties config = new Properties();
config.setProperty("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword(password);
session.connect();
return session;
}
/* 上传文件*/
public static void uploadFile(Session session, String localPath, String remotePath) throws Exception {
ChannelSftp channel = (ChannelSftp)session.openChannel("sftp");
channel.connect();
channel.put(localPath, remotePath);
}
/* 执行命令 */
public static void execCommand(Session session, String command) throws Exception{
ChannelExec channel = (ChannelExec)session.openChannel("exec");
InputStream in = channel.getInputStream();
channel.setCommand(command);
channel.setErrStream(System.err);
channel.connect();
String result = IOUtils.toString("utf-8");
System.out.println(result);
}
}