Ganymed SSH

目录
1 SSH简介 1
2 JAVA实现SSH的项目 1
3 GANYMED SSH 1
3.1 依赖说明 1
3.2 实现简单命令 1
3.2 实现SCP命令

1 SSH简介
SSH协议的简介可见:[url]http://xmong.iteye.com/blog/1698124[/url]

2 Java实现SSH的项目
Java 实现SSH协议的项目有很多,如JFTP,trilead SSH,JSCH,ganymed SSH等
下面我们主要说的是关于ganymed SSH的一些小使用。
Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个项目。可以通过它直接在Java程序中连接SSH服务器,实现基于SSH协议的服务访问。 如远程命令执行和shell访问,本地和远程端口转发,本地数据流转发,X11转发,SCP,SFTP等功能。

3 Ganymed SSH
3.1 依赖说明
Ganymed SSH地址:[url]http://www.ganymed.ethz.ch/ssh2/[/url],下载ganymed-ssh2-build210.zip包,解压后可见src(源代码),ganymed-ssh2-build210.jar (jar包),javadoc(常用api文档),examples(简单使用案例)。可以通过简单使用案例学习ganymed ssh的使用。

使用方法:将 ganymed-ssh2-build210.jar 加入到java项目的lib中即可使用。

3.2 实现简单命令

package com.example;

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;

import ch.ethz.ssh2.Connection;import ch.ethz.ssh2.Session;import ch.ethz.ssh2.StreamGobbler;

public class Basic{  public static void main(String[] args)    {                //服务器ip        String hostname = "172.30.5.162";                //用户名       String username = "xmong";                //密码       String password = "xmong";

       try       {         /* Create a connection instance */            //构造一个连接器,传入一个需要登陆的ip地址,连接服务            Connection conn = new Connection(hostname);

            /* Now connect */         conn.connect();

         /* Authenticate.           * If you get an IOException saying something like             * "Authentication method password not supported by the server at this stage."           * then please check the FAQ.          */           //用户验证,传入用户名和密码            boolean isAuthenticated = conn.authenticateWithPassword(username, password);

           if (isAuthenticated == false)               throw new IOException("Authentication failed.");

          /* Create a session */            //打开一个会话session,执行linux命令          Session sess = conn.openSession();

           sess.execCommand("pwd");

          System.out.println("Here is some information about the remote host:");

            /*             * This basic example does not handle stderr, which is sometimes dangerous             * (please read the FAQ).          */           //接收目标服务器上的控制台返回结果,输出结果。          InputStream stdout = new StreamGobbler(sess.getStdout());

          BufferedReader br = new BufferedReader(new InputStreamReader(stdout));

         while (true)          {             String line = br.readLine();             if (line == null)                   break;                System.out.println(line);         }

           /* Show exit status, if available (otherwise "null") */         //得到脚本运行成功与否的标志 :0-成功 非0-失败          System.out.println("ExitCode: " + sess.getExitStatus());

         /* Close this session */          //关闭session和connection            sess.close();

           /* Close the connection */

          conn.close();

       }     catch (IOException e)     {         e.printStackTrace(System.err);            System.exit(2);       } }}

输出结果:

Here is some information about the remote host:/home/xmongExitCode: null

3.2 实现SCP命令

package com.test;

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;

import ch.ethz.ssh2.Connection;import ch.ethz.ssh2.SCPClient;import ch.ethz.ssh2.Session;import ch.ethz.ssh2.StreamGobbler;

public class TestScp {

    public static void main(String[] args)    {     String hostname = "172.30.5.162";      String username = "xmong";     String password = "xmong";

       try       {         /* Create a connection instance */            //构造一个连接器,传入一个需要登陆的ip地址,连接服务            Connection conn = new Connection(hostname);          conn.connect();

         //用户验证,传入用户名和密码            boolean isAuthenticated = conn.authenticateWithPassword(username, password);

           if (isAuthenticated == false)               throw new IOException("Authentication failed.");

          //创建一个copy文件客户端           SCPClient scpClient = conn.createSCPClient();            scpClient.put("D:/test.txt ", "./");//从本地复制文件到远程目录            scpClient.get("./test.txt", "E:/");//从远程获取文件

            /**            * 通过SFTP远程读取文件内容          * test.txt文件内容为sftp---test            */           SFTPv3Client sftpClient = new SFTPv3Client(conn);            SFTPv3FileHandle sftpHandle = sftpClient.openFileRW("./test.txt");         byte[] bs = new byte[11];            int i = 0;           long offset = 0;         while(i!=-1){                i = sftpClient.read(sftpHandle, offset, bs, 0, bs.length);               offset += i;            }         System.out.println(new String(bs));

         //打开一个会话session,执行linux命令          Session sess = conn.openSession();           sess.execCommand("ls");         System.out.println("Here is some information about the remote host:");

            //接收目标服务器上的控制台返回结果,输出结果。          InputStream stdout = new StreamGobbler(sess.getStdout());            BufferedReader br = new BufferedReader(new InputStreamReader(stdout));           while (true)          {             String line = br.readLine();             if (line == null)                   break;                System.out.println(line);         }

           //得到脚本运行成功与否的标志 :0-成功 非0-失败          System.out.println("ExitCode: " + sess.getExitStatus());

         //关闭session和connection            sess.close();         conn.close();

       }     catch (IOException e)     {         e.printStackTrace(System.err);            System.exit(2);       } }

}

输出结果:

sftp---testHere is some information about the remote host:test.txtExitCode: 0

Ganymed ssh小使用相关推荐

  1. Java使用Ganymed SSH远程登录服务器并读取文件

    Java使用Ganymed SSH远程登录服务器并读取文件 导入jar包,或配置依赖 <-- ganymed-ssh2-build210.jar --> <dependency> ...

  2. ganymed ssh-2 for java,用于java连接问题的Ganymed SSH(Ganymed SSH for java connect issue)

    用于java连接问题的Ganymed SSH(Ganymed SSH for java connect issue) 我们正在使用Ganymed-SSH库并在与另一台机器进行SSH时遇到此错误. [r ...

  3. SSRF 302跳转 gopher协议攻击redis写入ssh公钥,实现远程无密登录(学习总结)

    一.SSRF漏洞 SSRF(Server Side Request Forgery,服务器端请求伪造)是一种攻击者通过构造数据进而伪造服务器端发起请求的漏洞,因为求情是由服务器发出的,所以往往是利用S ...

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

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

  5. 关于Action模型驱动无法获取属性的问题

    这两天在练习ssh小项目发现action层怎都无法获取Ajax传过来的json: 1.检查表单name和action定义属性名是否一致 2.get/Set方法 3.表单和属性名的命名问题,驼峰法 转载 ...

  6. 程序员的自我救赎,GitHub 摸鱼神器一览

    作者 | HelloGitHub-小鱼干 来源 | HelloGitHub 都知道 VSCode 有各种摸鱼小插件,边听云音乐.边在 IDE 斗地主,再来一个 NBA 直播,怎一个美滋滋了得.作为 V ...

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

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

  8. 使用context:component-scan base-package= /context:component-scan报500错误

    今天练习SSH小程序,在springmvc.xml中使用<context:component-scan base-package="" ></context:co ...

  9. frp实现花生壳+阿里云内网穿透,实现公有IP映射到本地(支持 TCP、UDP、HTTP、HTTPS 等多种协议)

    简介: 一文搞懂frp内网穿透并搭建配置使用,Windows.Mac电脑远程链接! frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内 ...

最新文章

  1. boost thread 判断是否正在运行_java高端基础:Thread源码解读
  2. 原创 深度 技术:WatchStor焦点周刊创刊号
  3. DHCP的4步租约过程
  4. .NET 的 WCF 和 WebService 有什么区别?(转载)
  5. 简述java的异常处理机制_简述java异常处理机制
  6. 晨哥真有料丨及时止损的信号及可能的挽回方法
  7. 【COCOS2D-HTML5 开发之三】演示样例项目附源代码及执行的GIF效果图
  8. Python自动化开发学习的第四周------函数进阶
  9. 服务器win10系统开机慢,Win10系统开机慢怎么办 windows10开机慢的解决方法
  10. 图:经过艰苦的代码收官阶段,我的抽奖软件作品终于完工,大家欣赏.从我个人的自我判断来看,其它的抽奖软件都是浮云...
  11. php将xml转为array,php将xml数据转化为数组(array)
  12. 正交匹配追踪算法(OMP)简介与详解
  13. 在线古诗自动生成器的设计与实现
  14. Linux操作系统加固
  15. 订单业务中如何保证接口的幂等性
  16. amd一键超频怎么用_(完整版)超频必看AMD_CPU超频教程
  17. 关于ie中使用a标签无法打开(预览)pdf问题
  18. switch c语言格式,switch语句格式是什么
  19. 现代信号处理——时频分析与时频分布(时频分布的基本理论)
  20. JavaScript 行间事件、提取行间事件

热门文章

  1. adobe air php,用HTML/Javascript开发者Adobe AIR教程(1)
  2. 用XP玩DX10游戏! DirectX 10兼容性库
  3. 智慧小区(智慧小区管理系统)
  4. Unity3D--Procedural buildings
  5. python统计word表格写入excel
  6. UE4/UE5 虚幻引擎,材质篇(一)
  7. JavaScript实现走马灯效果[无缝连接、循环滚动]
  8. 超高频RFID电子标签常见应用领域有哪些
  9. RFID技术在生活中有哪些应用?
  10. android 自动创建ap,Best WIFI 让 Android 自动连接到信号较强的 AP(Wifi 无线网络基地台)...