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/
分享到:
相关推荐
Jsch(Java Secure Channel)是一个纯Java语言编写的库,它能够实现SSH(Secure Shell)功能。SSH是一种安全协议,它主要用于在不同的系统或服务器间建立安全的连接,并在传输数据的过程中对数据进行加密。在Java中...
Java中的JSCH库(JSch)是实现SSH连接的开源库,它提供了全面的功能,包括SFTP(SSH File Transfer Protocol)、SCP(Secure Copy)以及shell会话等。在本文中,我们将深入探讨如何使用JSch-0.1.54.jar这个库来实现...
ant运行scp以及sshexec任务所必须的jar包,这是optional的,所以ant默认不会有的,需要自己加上
在java里可以通过Ganymed SSH-2, Expect4j等实现ssh登录,由于Ganymed SSH-2是纯java实现,并且可以实现scp,sftp等,因此我们采用Ganymed SSH-2 1> 下载安装 从http://code.google.com/p/ganymed-ssh-2/ 下载,...
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任务...
在这个场景下,`jscp`和`j2ssh`是两个关键的Java库,它们提供了与SSH和SCP交互的API,使得开发者能够在Ant脚本中执行远程操作。 `jscp`(Java Secure Channel Protocol)是一个Java实现的SSH客户端库,它允许Java...
模板化执行命令示例 [$]send[su - root] [Password:]password[123456] [#]send[cd /etc] [#]send[] [#]send[] [#]send[exit] [$]send[exit] 具体模板参数意义下载解压缩后查看batch.list中有解释
JSch是一个Java实现的SSH2库,它允许用户执行SSH连接、SFTP会话以及SCP命令。要使用JSch,首先需要将其添加到项目依赖中。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...
JSch(Java Secure Channel)是一个纯Java实现的SSH2库,它允许Java应用程序连接到支持SSH协议的服务器,进行安全的远程操作,如文件传输。在本文中,我们将深入探讨JSch库的工作原理、如何配置以及如何使用JSch实现...
总之,Java中实现SCP功能主要依赖于JSch库,通过建立SSH连接,执行SCP命令,以及处理异常和关闭连接,可以实现安全的文件传输。这个过程虽然涉及一些步骤,但通过封装和抽象,可以构建出易于使用的SCP工具类,供整个...
JSch是一个纯Java实现的SSH2库,提供了对SFTP、SCP和SSH命令的支持。要使用JSch,你需要将其添加到项目的类路径中。 下面是一些关键步骤来实现SSH远程执行Shell脚本: 1. **创建JSch实例**: 首先,我们需要创建...
JSCH(Java Secure Channel)是SSH的一个开源实现,它为Java开发者提供了一个API,可以方便地创建SSH连接,执行命令,进行文件传输等操作。这个API允许开发者在Java应用中集成SSH功能,例如用于自动化运维、远程脚本...
JSch是一个纯Java实现的SSH2库,它允许Java开发者执行命令、打开shell、建立SCP和SFTP(SSH File Transfer Protocol)连接。以下是一些关于Java SSH2整合的关键知识点: 1. **JSch库的引入**:首先,你需要在项目中...
JSch,全称为Java Secure Channel,是一个开源的Java库,用于实现SSH(Secure Shell)协议。这个库的主要目的是提供安全的远程登录、文件传输以及端口转发等功能,广泛应用于需要在Java应用程序中进行安全通信的场景...
在Java中,例如JSch库可以用于实现SSH连接,进行文件传输、远程命令执行等功能。这对于开发者在分布式系统中进行自动化运维和数据同步非常重要。 4. **Java与SSH整合**:在Java应用中,有时我们需要通过SSH连接远程...
JSch(Java Secure Channel)是一个开源的Java库,它实现了SSH(Secure SHell)协议,允许Java应用程序进行安全的远程登录、文件传输和其他与SSH相关的操作。在本文中,我们将深入探讨JSch库的核心功能,以及如何...
它依赖于Jsch库,这是一个Java实现的SSH2库,允许开发者通过SSH协议与远程服务器进行交互。这个插件极大地简化了在持续集成环境中对远程服务器的自动化操作。 ### Maven配置 在`pom.xml`中配置SSHExec Maven ...
JSch是一个Java实现的SSH2库,它支持SFTP、SCP以及shell会话,使得Java开发者可以方便地进行远程文件操作,包括上传、下载和执行命令。 在这个主题中,"SFTP下载(JSch可跨服务器)"着重讨论的是如何使用JSch库实现...
版本0.1.54是该库的一个稳定版本,提供了多种功能,包括SFTP(Secure File Transfer Protocol)、SCP(Secure Copy Protocol)以及远程命令执行。JSch库的官方网站是http://www.jcraft.com/jsch/,在这里可以下载到...
- JSch:一个流行的Java SSH2实现,可以在官方网站(https://www.jcraft.com/jsch/)下载最新版本的JSch库。它提供了丰富的API,支持SSH2的会话管理、文件传输、命令执行等功能。 - Apache MINA:一个异步网络应用...