`
xmong
  • 浏览: 261740 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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协议的简介可见:http://xmong.iteye.com/blog/1698124

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地址:http://www.ganymed.ethz.ch/ssh2/,下载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/xmong
ExitCode: 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---test
Here is some information about the remote host:
test.txt
ExitCode: 0



分享到:
评论

相关推荐

    Ganymed SSH-2 for Java

    这个库的文件ganymed-ssh2-build250可能包含了编译好的JAR文件和其他相关文档,例如API文档或者示例代码,帮助开发者快速理解和使用Ganymed SSH-2库。通过集成这个库,Java开发者可以安全、高效地利用SSH-2协议与...

    ganymed-ssh2-262.jar

    描述中提到的“使用 ganymed-ssh2-262.jar 通过ssh协议链接资源执行脚本命令”表明了这个库的主要用途。通过Ganymed SSH2库,开发者可以编写代码来建立SSH连接,然后执行远程服务器上的脚本或命令。这在自动化运维、...

    ganymed-ssh2-build250.rar,jar包,源码,例子,javadoc

    再者,`ganymed-ssh2-build250-examples.jar`包含了一些示例代码,这些示例展示了如何使用Ganymed SSH2库进行基本操作,如建立SSH连接、执行远程命令、SFTP文件传输等。开发者可以通过运行这些示例快速上手,为自己...

    Java运用ganymed-ssh2-build210.jar包远程连接操作linux服务器

    Java 远程连接 Linux 服务器使用 Ganymed-SSH2 库 标题解释 本文档的标题是"Java 运用 Ganymed-SSH2 库远程连接操作 Linux 服务器",这意味着我们将使用 Java 语言来远程连接 Linux 服务器,并使用 Ganymed-SSH2...

    ganymed-ssh2-build210

    标题“ganymed-ssh2-build210”指的是一个基于Java实现的SSH(Secure Shell)库,专门用于远程管理Linux服务器。这个库是 Ganymed SSH-2 的一个特定版本,版本号为210。SSH协议允许用户通过安全加密的通道与远程主机...

    ganymed-ssh2 工具类

    本文将深入探讨ganymed-ssh2工具类的使用及其核心功能。 ** SSH连接与认证 ** ganymed-ssh2库的核心在于其能够建立安全的SSH连接。首先,开发人员需要创建`Connection`对象,提供目标服务器的IP地址或域名以及端口...

    ssh协议依赖jar包:ganymed-ssh2-build

    在Java环境中,开发人员通常使用库来实现SSH功能,其中一个常用的库就是Ganymed SSH-2。这个库名为ganymed-ssh2-build,它允许Java应用程序与远程服务器建立SSH连接,执行命令,传输文件等。 Ganymed SSH-2库是由...

    ganymed-ssh2-build

    在实际应用中,开发者可能会使用Ganymed SSH2库来实现以下功能: - 自动化部署:在远程服务器上执行部署脚本,更新应用程序或服务。 - 监控和日志收集:定期检查服务器状态,收集日志文件。 - 故障排查:在出现问题...

    ganymed-ssh2-263.jar

    解决openssh升级到8.2以后无法登录的问题,支持jdk1.5及以上版本

    ganymed-ssh2-build261.jar,还有源码

    总之,Ganymed SSH2 Build 261是Java开发者实现SSH2功能的强大工具,配合源码使用,可以帮助开发者更好地理解和定制SSH2通信过程,从而提升应用程序的安全性和效率。无论是初次接触SSH2还是寻求更深层次的理解,...

    ganymed-ssh2 远程连接java实例代码

    Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。可以利用它直接在Java程序中连接SSH服务器。Ganymed SSH-2支持SSH对话(远程命令执行和shell访问),本地和远程端口转发,本地数据流转发,X11转发和SCP。这些...

    Java(通过ganymed-ssh2-build210.jar)实现SSH远程连接linux终端

    在Java中使用SSH2,ganymed-ssh2-build210.jar库提供了方便的API,可以创建连接、执行命令、读取输出、甚至建立隧道。 要使用这个库,首先需要将其添加到项目依赖中。在Maven项目中,可以在pom.xml文件中添加如下...

    ganymed-ssh2.rar

    "示例"是实际应用的演示,它们展示了如何在实际项目中使用ganymed-ssh2,帮助开发者快速入门,减少摸索的时间。示例代码通常涵盖基本功能,如建立连接、执行命令,甚至可能包含更复杂的操作,如端口转发和文件传输。...

    ganymed-ssh2-build251beta1.zip

    在java里可以通过Ganymed SSH-2, Expect4j等实现ssh登录,由于Ganymed SSH-2是纯java实现,并且可以实现scp,sftp等,因此我们采用Ganymed SSH-2

    ganymed-ssh2-build210-sources.jar.zip

    下载网站https://repo1.maven.org/maven2/ch/ethz/ganymed/ganymed-ssh2/build210/ 此jar源码文件中包含以下这些类: SCPClient.lass Session.class Connection.clss 等许多文件传输类。 查看源码的方法: 1.把此jar...

    如何利用Ganymed SSH-2模拟SSH操作

    **使用Ganymed SSH-2进行SSH操作的基本步骤** 1. **建立连接**:首先,你需要创建一个`Connection`对象,传入目标服务器的主机名。 2. **连接服务器**:使用`conn.connect()`方法建立与服务器的连接。 3. **认证**...

Global site tag (gtag.js) - Google Analytics