JSCH是一个纯粹的用java实现SSH功能的java library. 官方地址为:http://www.jcraft.com/jsch/
备注: SSH是一个安全协议,用来在不同系统或者服务器之间进行安全连接。
SSH在连接和传送的过程中会加密所有的数据
Mvn引用:
<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.46</version> </dependency>
一, 特点
1, 基于DSA和RSA加密。
2, 可以实现4中认证机制。分别是:
(1i): password
(2i): publickey(DSA,RSA)
(3i): keyboard-interactive
(4i): gss-api-with-mic
3.生成public/private key pair.
4.执行bash script 等脚本
5.可以通过HTTP/SOCK5 proxy
6.支持常见SSH1协议和SSH2协议
二, demo
参数说明:
user:所连接的Linux主机登录时的用户名
password:登录密码
server:主机地址
serverport: 端口号,默认为22
public String exeCommand(String host, int port, String user,
String password, String command, ByteArrayOutputStream baos)
throws JSchException, IOException {
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword(password);
session.connect();
ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
InputStream in = channelExec.getInputStream();
channelExec.setCommand(command);
channelExec.setErrStream(baos);
channelExec.connect();
String out = IOUtils.toString(in, "UTF-8");
channelExec.disconnect();
session.disconnect();
return out;
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
String out = "";
try {
out = exeCommand(FILESERVER, FILESERVERPORT, FILESERVERUSER, FILESERVERPASSWORD, command, baos);
} catch (JSchException e) {
flag = "E";
} catch (IOException e) {
flag = "E";
}
String err = baos.toString();
if (!err.isEmpty()) {
String[] errors = err.split("\n");
for (String error : errors) {
System.out.println("error=" + error);
}
if (errors.length == files.length) {
flag = "E";
} else {
flag = "Y";
}
}
System.out.println("=================share end==================");
return flag;
更多示例: http://www.jcraft.com/jsch/examples/