Ganymed ssh小使用
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小使用相关推荐
- Java使用Ganymed SSH远程登录服务器并读取文件
Java使用Ganymed SSH远程登录服务器并读取文件 导入jar包,或配置依赖 <-- ganymed-ssh2-build210.jar --> <dependency> ...
- 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 ...
- SSRF 302跳转 gopher协议攻击redis写入ssh公钥,实现远程无密登录(学习总结)
一.SSRF漏洞 SSRF(Server Side Request Forgery,服务器端请求伪造)是一种攻击者通过构造数据进而伪造服务器端发起请求的漏洞,因为求情是由服务器发出的,所以往往是利用S ...
- java 连接远程服务器_java实现连接远程服务器并执行命令的基本原理
一.所需jar包 需要借助Ganymed SSH的jar包: ganymed-ssh2-build210.jar 二.实现原理 Ganymed SSH-2 java在整个访问过程中担当SSH的客户端 ...
- 关于Action模型驱动无法获取属性的问题
这两天在练习ssh小项目发现action层怎都无法获取Ajax传过来的json: 1.检查表单name和action定义属性名是否一致 2.get/Set方法 3.表单和属性名的命名问题,驼峰法 转载 ...
- 程序员的自我救赎,GitHub 摸鱼神器一览
作者 | HelloGitHub-小鱼干 来源 | HelloGitHub 都知道 VSCode 有各种摸鱼小插件,边听云音乐.边在 IDE 斗地主,再来一个 NBA 直播,怎一个美滋滋了得.作为 V ...
- java 远程连接_java实现连接远程服务器并执行命令的基本原理
一.所需jar包 需要借助Ganymed SSH的jar包: ganymed-ssh2-build210.jar 二.实现原理 Ganymed SSH-2 java在整个访问过程中担当SSH的客户端 ...
- 使用context:component-scan base-package= /context:component-scan报500错误
今天练习SSH小程序,在springmvc.xml中使用<context:component-scan base-package="" ></context:co ...
- frp实现花生壳+阿里云内网穿透,实现公有IP映射到本地(支持 TCP、UDP、HTTP、HTTPS 等多种协议)
简介: 一文搞懂frp内网穿透并搭建配置使用,Windows.Mac电脑远程链接! frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内 ...
最新文章
- boost thread 判断是否正在运行_java高端基础:Thread源码解读
- 原创 深度 技术:WatchStor焦点周刊创刊号
- DHCP的4步租约过程
- .NET 的 WCF 和 WebService 有什么区别?(转载)
- 简述java的异常处理机制_简述java异常处理机制
- 晨哥真有料丨及时止损的信号及可能的挽回方法
- 【COCOS2D-HTML5 开发之三】演示样例项目附源代码及执行的GIF效果图
- Python自动化开发学习的第四周------函数进阶
- 服务器win10系统开机慢,Win10系统开机慢怎么办 windows10开机慢的解决方法
- 图:经过艰苦的代码收官阶段,我的抽奖软件作品终于完工,大家欣赏.从我个人的自我判断来看,其它的抽奖软件都是浮云...
- php将xml转为array,php将xml数据转化为数组(array)
- 正交匹配追踪算法(OMP)简介与详解
- 在线古诗自动生成器的设计与实现
- Linux操作系统加固
- 订单业务中如何保证接口的幂等性
- amd一键超频怎么用_(完整版)超频必看AMD_CPU超频教程
- 关于ie中使用a标签无法打开(预览)pdf问题
- switch c语言格式,switch语句格式是什么
- 现代信号处理——时频分析与时频分布(时频分布的基本理论)
- JavaScript 行间事件、提取行间事件
热门文章
- adobe air php,用HTML/Javascript开发者Adobe AIR教程(1)
- 用XP玩DX10游戏! DirectX 10兼容性库
- 智慧小区(智慧小区管理系统)
- Unity3D--Procedural buildings
- python统计word表格写入excel
- UE4/UE5 虚幻引擎,材质篇(一)
- JavaScript实现走马灯效果[无缝连接、循环滚动]
- 超高频RFID电子标签常见应用领域有哪些
- RFID技术在生活中有哪些应用?
- android 自动创建ap,Best WIFI 让 Android 自动连接到信号较强的 AP(Wifi 无线网络基地台)...