当前位置:   article > 正文

服务器实现Java远程访问Linux服务器(JSch)

服务器实现Java远程访问Linux服务器(JSch)

要实现 Java 远程访问 Linux 服务器,首先要建立 SSH 连接。SSH(Secure Shell)是一种强大的网络安全技术,可以在受信任的两台主机之间创建一条加密的连接,以保护数据进行传输。一般来说,SSH服务器使用22端口,只要将服务器的 IP 地址及端口填入 SSH 客户端实现连接,就可以得到连接权限。

JSch是SSH2的纯Java实现 。通过使用 jsch 开源库处理 SSH 连接,session 对象来发送指令并且解析返回值,以及最终关闭连接,可以实现 Java 程序和远程服务器之间的交互。

建立 SSH 连接之后,我们可以使用 Java 语言的相关的 API 来控制远程的 Linux 服务器,具体的步骤如下:

1.使用 jsch 开源库负责 SSH 连接,来执行连接服务器:

  1. // 创建 Jsch 实例
  2. JSch jsch = new JSch();
  3. // 指定服务器IP地址
  4. String host =172.16.3.15”;
  5. // 设置SSH服务器端口,默认端口为22
  6. int port = 22;
  7. // 建立连接
  8. Session session = jsch.getSession(user,host, port);
  9. // 有密码设置密码无密码无需配置
  10. session.setPassword("123");
  11. // 解决用户不能远程登录
  12. // session.setConfig("userauth.gssapi-with-mic", "no");
  13. // 设置第一次登陆的时候提示,可选值:(ask | yes | no) 
  14. // session.setConfig("StrictHostKeyChecking", "no");

2.使用 session 对象来发送指令至服务器:

  1. // 打开连接
  2. session.connect();
  3. // 10秒连接超时
  4. // session.connect(10 * 1000);
  5. // 执行指令
  6. String command = “ls -lha”;
  7. Channel channel =session.openChannel(“exec”);
  8. // 设置指令
  9. ((ChannelExec) channel).setCommand(command);
  10. // 接收数据
  11. InputStream in = channel.getInputStream();
  12. // 执行
  13. channel.connect();

3.解析返回值。

  1. // 申明缓存区
  2. byte[] tmp = new byte[1024];
  3. // 将返回的数据放入缓存中
  4. while(true){
  5. while (in.available() > 0) {
  6. int i = in.read(tmp, 0, 1024);
  7. if (i
  8. }
  9. }

最后,关闭连接:

  1. // 关闭连接
  2. session.disconnect();
  3. channel.disconnect();

或者执行Linux命令

  1. String shell = "cd /home/test/check_tran/output && sudo rm -rf 19321 "
  2. List<String> list = session.immediateShell2(shell); 
  3. System.out.println(list.toString());
  4. session.disconnect();
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/320334
推荐阅读
相关标签
  

闽ICP备14008679号