您的位置:首页 > 运维架构 > Linux

linux 使用java编写ssh登陆主机 输入密码登陆并执行命令(jsch)

2016-09-09 16:33 1411 查看
代码转自http://blog.csdn.net/u014234061/article/details/51445540

场景:在一台linux机器A上连接另一台linux机器B,并在B上执行命令(此处是调用B上的jar)。

需要使用的jar包:jsch-0.1.54.jar

这个jar我上传在:http://download.csdn.net/detail/gogogogood/9626370

具体代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.Properties;

import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
public class Main {
public static void main(String[] args) throws JSchException, IOException {
JSch jsch = new JSch(); // 创建JSch对象
String userName = "xiaoguo";// 用户名
String password = "password";// 密码
String host = "10.37.56.78";// 服务器地址
int port = 22;// 端口号
String cmd = "java -cp /home/xiaoguo/hehe.jar Main";// 要运行的命令
Session session = jsch.getSession(userName, host, port); // 根据用户名,主机ip,端口获取一个Session对象
session.setPassword(password); // 设置密码
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config); // 为Session对象设置properties
int timeout = 60000000;
session.setTimeout(timeout); // 设置timeout时间
session.connect(); // 通过Session建立链接
ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
channelExec.setCommand(cmd);
channelExec.setInputStream(null);
channelExec.setErrStream(System.err);
channelExec.connect();
InputStream in = channelExec.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in, Charset.forName("UTF-8")));
String buf = null;
StringBuffer sb = new StringBuffer();
while ((buf = reader.readLine()) != null) {
sb.append(buf);
System.out.println(buf);// 打印控制台输出
}
reader.close();
channelExec.disconnect();
if (null != session) {
session.disconnect();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ssh linux 密码