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;