一、所需jar包

需要借助Ganymed SSH的jar包:  ganymed-ssh2-build210.jar

二、实现原理

Ganymed SSH-2 java在整个访问过程中担当SSH的客户端,由于Linux系统自带SSH服务,所以可以直接访问Linux系统并执行相关命令,而 Windows系统则需要首先安装SSH服务。

三、Win下SSH服务的安装配置

当远程服务器为Windows系统时, 需要在远程服务器中安装Windows版的SSH服务,比如:freesshd。

1.安装完freesshd后,首选在[Users]下添加用来远程连接的win系统用户,此处采用密码认证的方式,允许使用shell:

2.然后再在【Authentication】下设置允许密码认证方式:

3.到[Server status]下查看SSH服务器状态,确保启动即可。最后点击【确定】即可。

四、java代码实现远程连接服务器并执行命令

/*

* To change this license header, choose License Headers in Project Properties.

* To change this template file, choose Tools | Templates

* and open the template in the editor.

*/

package test;

import java.io.IOException;

import ch.ethz.ssh2.Connection;

import ch.ethz.ssh2.Session;

import ch.ethz.ssh2.StreamGobbler; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; /*   @author: Liu Yuanyuan   purpose: test connecting remote computer and execute linux command */ public class TestRemoteConnect  {     public static void main(String[] args)      {         String hostname = "192.168.100.50";         int port = 22;//22 usually the default port         String username = "root";         String password = "highgo";         //指明连接主机的IP地址           Connection conn = new Connection(hostname,port);         Session ssh = null;         try         {             //连接到主机               conn.connect();             //使用用户名和密码校验               boolean isconn = conn.authenticateWithPassword(username, password);             if (!isconn)              {                 System.out.println("用户名称或者是密码不正确");             }              else      {                 System.out.println("已经连接OK");                                  //以下是linux的示例                 //将本地conf/server_start.sh传输到远程主机的/opt/pg944/目录下                 SCPClient clt = conn.createSCPClient();                                 clt.put("conf/server_start.sh", "/opt/pg944/");                                                  //执行命令                 ssh = conn.openSession();                  ssh.execCommand("sh /root/hello.sh");                 //ssh.execCommand("perl /root/hello.pl");                   //只允许使用一行命令,即ssh对象只能使用一次execCommand这个方法,多次使用则会出现异常.                      //使用多个命令用分号隔开                   //ssh.execCommand("cd /root; sh hello.sh");          /* 执行windows系统命令的示例         Session sess = conn.openSession();                 sess.execCommand("ipconfig");                 */ //将Terminal屏幕上的文字全部打印出来                                   InputStream is = new StreamGobbler(ssh.getStdout());                 BufferedReader brs = new BufferedReader(new InputStreamReader(is));                 while (true)  {                     String line = brs.readLine();                     if (line == null)              {                         break;                     }                     System.out.println(line);                 }             }                     }          catch (IOException e)          {             System.out.println(e.getMessage());             e.printStackTrace();         }          finally  {             //连接的Session和Connection对象都需要关闭               if(ssh!=null)             {                 ssh.close();             }             if(conn!=null)             {                 conn.close();             }         }     } }

五、其他的实现方式:

java 连接远程服务器_java实现连接远程服务器并执行命令的基本原理相关推荐

  1. java 远程连接_java实现连接远程服务器并执行命令的基本原理

    一.所需jar包 需要借助Ganymed SSH的jar包:  ganymed-ssh2-build210.jar 二.实现原理 Ganymed SSH-2 java在整个访问过程中担当SSH的客户端 ...

  2. java access dbq 参数_Java怎么连接access数据库,要求讲解详细一些

    import java.sql.*; public class ConnectAccess { /** * 初学者请注意: * 1:先建立一个access文件a1.mdb,并放在D:/下; * 2:在 ...

  3. python批量操作Linux服务器脚本,ssh密码登录(执行命令、上传、下载)(一)...

     1 #-*- coding: utf-8 -*-  2 #批量操作linux服务器(执行命令,上传,下载)  3 #!/usr/bin/python  4 import paramiko  5 im ...

  4. java 连接多实例_Java如何连接多实例SQL Server?

    异常产生 Java连接SQL Server一般字符串:jdbc:sqlserver://127.0.0.1:1433;DatabaseName=数据库名; 大家应该知道:如果机器上安装的是SQLSer ...

  5. java -jar 远程调试_java笔记:远程调试

    远程调试是说,我们可以通过idea或eclipse的调试器连接到另一台计算机的java进程进行调试(例如断点,单步执行什么的),如果一个问题在本地无法重现,那么远程调试就是很好的应对方法. 首先,远程 ...

  6. java字符连接字符串数组_Java中连接字符串的最佳方法

    java字符连接字符串数组 最近有人问我这个问题–在Java中使用+运算符连接字符串是否对性能不利? 这让我开始思考Java中连接字符串的不同方法,以及它们如何相互对抗. 这些是我要研究的方法: 使用 ...

  7. java ftp批量下载_java ftp连接一次下载多个文件

    展开全部 之前做的ftp连接下载的例子,62616964757a686964616fe78988e69d8331333337373539你试试!for (int i = 0; i String now ...

  8. java线程池示例_Java线程连接示例

    java线程池示例 Java Thread join method can be used to pause the current thread execution until unless the ...

  9. java获得sftp目录_Java代码获取SFTP服务器文件

    1 /** 2 *@authorshansm3 * @date 2020/3/18 -17:274 */ 5 public classSFTPUtil {6 7 private transient L ...

最新文章

  1. 将不确定变为确定~Flag特性的枚举是否可以得到Description信息
  2. 医改大背景下的第三方检验行业发展趋势
  3. docker 时间不一致,时区设置
  4. java 匿名访问权限_java-春季安全性allowAll()不允许匿名访问
  5. 与众不同 制作会唱歌的WinRAR - imsoft.cnblogs
  6. endnote怎么和word关联_endnote x9怎么和word关联?Word中用EndNote X9教程
  7. 在EditPlus中配置PHP调试
  8. Android源码分析之 JobScheduler
  9. 常见顺口溜 / 歇后语
  10. 如何解决“指定的服务已被标记为删除”错误
  11. tableau学生版注册流程
  12. python宠物系统_小练习 宠物管理系统
  13. 人工雨量计_自动站与人工站遥测雨量计降水量对比分析
  14. 计算机图形表示的原理
  15. unity运行时修改光源的颜色,变成白色
  16. OSChina 周三乱弹 —— 程序员的专属小习惯
  17. ECDSA VS Schnorr signature VS BLS signature
  18. 吴恩达---机器学习笔记
  19. day06数组-一维数组二维数组
  20. win7如何安装mysql5.7_WIN764安装mysql5.7

热门文章

  1. java 方法 示例_Java扫描仪的hasNextBoolean()方法与示例
  2. 开篇词:如何轻松获得 Offer
  3. 教你写Bug,常见的 OOM 异常分析
  4. C# Winform 窗体美化(九、嵌入窗体)
  5. Jetson Nano安装pytorch 基于torch1.6和torchvision0.7
  6. extern “C“解决链接问题
  7. Future源码解读
  8. itext pdf转图片_图片转PDF怎么转换?可以试试这个PDF转换软件
  9. 2021 河南 高考成绩查询,2021河南高考成绩查询入口
  10. mysql 分页 order_Mysql查询使用limit分页,同时使用order by可能产生的问题