`
rensanning
  • 浏览: 3548666 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38147
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607312
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682334
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89355
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401851
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69694
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91723
社区版块
存档分类
最新评论

Java执行SSH/SCP之JSch

    博客分类:
  • Java
 
阅读更多
JSch (Java Secure Channel)是纯Java的SSH2实现。可以把它集成到你的Java应用中来连接sshd服务器,执行指令(port forward, file transfer, terminal emulation)。Ant、Eclipse-CVSSSH2、NetBeans等工具都在使用它。如果你的服务部署在linux服务器中,有时你需要执行一些系统命令,这时候需要用到Runtime.getRuntime().exec("java -version"); 但是这样会让你的服务器内存瞬间增长很多。JSch基于JavaTM Cryptography Extension(JCE)通过Socket来实现通信,可以大大减少内存的暴涨。

http://www.jcraft.com/

版本:jsch-0.1.51.jar

SSH例子:
public void ssh() throws Exception {
	JSch jsch = new JSch();

	// connect session
	Session session = jsch.getSession(USER_ID, HOST_NAME, 22);
	session.setPassword(PASSWORD);
	session.setConfig("StrictHostKeyChecking", "no");
	session.connect();

	// exec command remotely
	String command = "ls -l";
	ChannelExec channel = (ChannelExec) session.openChannel("exec");
	channel.setCommand(command);
	channel.connect();

	// get stdout
	InputStream in = channel.getInputStream();
	byte[] tmp = new byte[1024];
	while (true) {
		while (in.available() > 0) {
			int i = in.read(tmp, 0, 1024);
			if (i < 0)
				break;
			System.out.print(new String(tmp, 0, i));
		}
		if (channel.isClosed()) {
			System.out.println("exit-status: " + channel.getExitStatus());
			break;
		}
		try {
			Thread.sleep(1000);
		} catch (Exception ee) {
		}
	}
	channel.disconnect();
	session.disconnect();
}


SFTP例子:
public void sftp() throws Exception {
	JSch jsch = new JSch();
	
	// connect session
	Session session = jsch.getSession(USER_ID, HOST_NAME, 22);
	session.setPassword(PASSWORD);
	session.setConfig("StrictHostKeyChecking", "no");
	session.connect();

	// sftp remotely
	ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");
	channel.connect();

	// ls
	Vector list = channel.ls(".");
	System.out.println("---- ls");
	for (int i = 0; i < list.size(); i++) {
		System.out.println(list.get(i));
	}

	// lstat
	try {
		SftpATTRS stat = channel.lstat("index.html");
		System.out.println("---- lstat");
		System.out.println(stat);
		System.out.println(stat.getSize());
	} catch (SftpException ex) {
		ex.printStackTrace();
	}

	// get
	channel.get("./index.html", "./index.html.dst");
	// put
	channel.put(new FileInputStream("c:/test.txt"), "test_new.txt");

	channel.disconnect();
	session.disconnect();
}


其他的工具还有:
Ganymed SSH-2:https://code.google.com/p/ganymed-ssh-2/
sshj :https://github.com/shikhar/sshj
Apache SSHD:http://mina.apache.org/sshd-project/
分享到:
评论

相关推荐

    详解Java使用Jsch与sftp服务器实现ssh免密登录

    Jsch(Java Secure Channel)是一个纯Java语言编写的库,它能够实现SSH(Secure Shell)功能。SSH是一种安全协议,它主要用于在不同的系统或服务器间建立安全的连接,并在传输数据的过程中对数据进行加密。在Java中...

    java进行ssh协议连接的jar包jsch-0.1.54.jar

    Java中的JSCH库(JSch)是实现SSH连接的开源库,它提供了全面的功能,包括SFTP(SSH File Transfer Protocol)、SCP(Secure Copy)以及shell会话等。在本文中,我们将深入探讨如何使用JSch-0.1.54.jar这个库来实现...

    jsch.jar--一个java实现的运行linux下面ssh和scp命令的工具

    ant运行scp以及sshexec任务所必须的jar包,这是optional的,所以ant默认不会有的,需要自己加上

    java程序里实现ssh, scp, sftp

    在java里可以通过Ganymed SSH-2, Expect4j等实现ssh登录,由于Ganymed SSH-2是纯java实现,并且可以实现scp,sftp等,因此我们采用Ganymed SSH-2 1&gt; 下载安装 从http://code.google.com/p/ganymed-ssh-2/ 下载,...

    使用Ant进行ssh和scp操作

    3. jsch-0.1.41.jar:JSch是另一个流行的Java SSH库,也可以用于实现SSH和SCP操作。 4. j2ssh-dameon-0.2.9.jar:可能包含与启动SSH守护进程相关的功能。 5. j2ssh-ant-0.2.9.jar:这是Ant的J2SSH扩展,使得Ant任务...

    ant下使用ssh或者scp所需要的包

    在这个场景下,`jscp`和`j2ssh`是两个关键的Java库,它们提供了与SSH和SCP交互的API,使得开发者能够在Ant脚本中执行远程操作。 `jscp`(Java Secure Channel Protocol)是一个Java实现的SSH客户端库,它允许Java...

    Jsch批量执行多条命令,包含切换用户输入密码

    模板化执行命令示例 [$]send[su - root] [Password:]password[123456] [#]send[cd /etc] [#]send[] [#]send[] [#]send[exit] [$]send[exit] 具体模板参数意义下载解压缩后查看batch.list中有解释

    java调SCP java调SCP.rar

    JSch是一个Java实现的SSH2库,它允许用户执行SSH连接、SFTP会话以及SCP命令。要使用JSch,首先需要将其添加到项目依赖中。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    jsch实现远程传输

    JSch(Java Secure Channel)是一个纯Java实现的SSH2库,它允许Java应用程序连接到支持SSH协议的服务器,进行安全的远程操作,如文件传输。在本文中,我们将深入探讨JSch库的工作原理、如何配置以及如何使用JSch实现...

    java scp实现方式

    总之,Java中实现SCP功能主要依赖于JSch库,通过建立SSH连接,执行SCP命令,以及处理异常和关闭连接,可以实现安全的文件传输。这个过程虽然涉及一些步骤,但通过封装和抽象,可以构建出易于使用的SCP工具类,供整个...

    (接上篇博客)Java SSH远程执行Shell脚本实现

    JSch是一个纯Java实现的SSH2库,提供了对SFTP、SCP和SSH命令的支持。要使用JSch,你需要将其添加到项目的类路径中。 下面是一些关键步骤来实现SSH远程执行Shell脚本: 1. **创建JSch实例**: 首先,我们需要创建...

    ssh开源开发API-JSCH.zip

    JSCH(Java Secure Channel)是SSH的一个开源实现,它为Java开发者提供了一个API,可以方便地创建SSH连接,执行命令,进行文件传输等操作。这个API允许开发者在Java应用中集成SSH功能,例如用于自动化运维、远程脚本...

    jsch的jar包,包含0.1.51,0.1.52,0.1.53,0.1.54等这几个版本

    JSch,全称为Java Secure Channel,是一个开源的Java库,用于实现SSH(Secure Shell)协议。这个库的主要目的是提供安全的远程登录、文件传输以及端口转发等功能,广泛应用于需要在Java应用程序中进行安全通信的场景...

    javaSSH2整合

    JSch是一个纯Java实现的SSH2库,它允许Java开发者执行命令、打开shell、建立SCP和SFTP(SSH File Transfer Protocol)连接。以下是一些关于Java SSH2整合的关键知识点: 1. **JSch库的引入**:首先,你需要在项目中...

    power,java,ssh

    在Java中,例如JSch库可以用于实现SSH连接,进行文件传输、远程命令执行等功能。这对于开发者在分布式系统中进行自动化运维和数据同步非常重要。 4. **Java与SSH整合**:在Java应用中,有时我们需要通过SSH连接远程...

    jsch-0.1.42.jar及用java实现SFTP的例子

    JSch(Java Secure Channel)是一个开源的Java库,它实现了SSH(Secure SHell)协议,允许Java应用程序进行安全的远程登录、文件传输和其他与SSH相关的操作。在本文中,我们将深入探讨JSch库的核心功能,以及如何...

    sshexec-maven-plugin:基于Jsch的ssh的文件上传和命令执行的Maven插件

    它依赖于Jsch库,这是一个Java实现的SSH2库,允许开发者通过SSH协议与远程服务器进行交互。这个插件极大地简化了在持续集成环境中对远程服务器的自动化操作。 ### Maven配置 在`pom.xml`中配置SSHExec Maven ...

    SFTP下载(JSch可跨服务器)

    JSch是一个Java实现的SSH2库,它支持SFTP、SCP以及shell会话,使得Java开发者可以方便地进行远程文件操作,包括上传、下载和执行命令。 在这个主题中,"SFTP下载(JSch可跨服务器)"着重讨论的是如何使用JSch库实现...

    官网jsch-0.1.54.jar和可选包jzlib-1.1.3.jar

    版本0.1.54是该库的一个稳定版本,提供了多种功能,包括SFTP(Secure File Transfer Protocol)、SCP(Secure Copy Protocol)以及远程命令执行。JSch库的官方网站是http://www.jcraft.com/jsch/,在这里可以下载到...

    SSH2环境搭建Jar包

    - JSch:一个流行的Java SSH2实现,可以在官方网站(https://www.jcraft.com/jsch/)下载最新版本的JSch库。它提供了丰富的API,支持SSH2的会话管理、文件传输、命令执行等功能。 - Apache MINA:一个异步网络应用...

Global site tag (gtag.js) - Google Analytics