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

java程序实现对sftp服务器的操作

阅读更多

在这里介绍对sftp操作的一种java框架:JSch-Java Secure Channel,官方地址是:http://www.jcraft.com/jsch/

具体使用方法请看下面代码:

package jsch;

import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

public class Test {

	protected String host;//sftp服务器ip
	protected String username;//用户名
	protected String password;//密码
	protected String privateKey;//密钥文件路径
	protected String passphrase;//密钥口令
	protected int port = 22;//默认的sftp端口号是22

	/**
	 * 获取连接
	 * @return channel
	 */
	public ChannelSftp connectSFTP() {
		JSch jsch = new JSch();
		Channel channel = null;
		try {
			if (privateKey != null && !"".equals(privateKey)) {
				//使用密钥验证方式,密钥可以使有口令的密钥,也可以是没有口令的密钥
				if (passphrase != null && "".equals(passphrase)) {
					jsch.addIdentity(privateKey, passphrase);
				} else {
					jsch.addIdentity(privateKey);
				}
			}
			Session session = jsch.getSession(username, host, port);
			if (password != null && !"".equals(password)) {
				session.setPassword(password);
			}
			Properties sshConfig = new Properties();
			sshConfig.put("StrictHostKeyChecking", "no");// do not verify host key
			session.setConfig(sshConfig);
			// session.setTimeout(timeout);
			session.setServerAliveInterval(92000);
			session.connect();
			//参数sftp指明要打开的连接是sftp连接
			channel = session.openChannel("sftp");
			channel.connect();
		} catch (JSchException e) {
			e.printStackTrace();
		}
		return (ChannelSftp) channel;
	}
	
	/**
	 * 上传文件
	 * 
	 * @param directory
	 *            上传的目录
	 * @param uploadFile
	 *            要上传的文件
	 * @param sftp
	 */
	public void upload(String directory, String uploadFile, ChannelSftp sftp) {
		try {
			sftp.cd(directory);
			File file = new File(uploadFile);
			sftp.put(new FileInputStream(file), file.getName());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 下载文件
	 * 
	 * @param directory
	 *            下载目录
	 * @param downloadFile
	 *            下载的文件
	 * @param saveFile
	 *            存在本地的路径
	 * @param sftp
	 */
	public void download(String directory, String downloadFile,
			String saveFile, ChannelSftp sftp) {
		try {
			sftp.cd(directory);
			sftp.get(downloadFile,saveFile);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 删除文件
	 * 
	 * @param directory
	 *            要删除文件所在目录
	 * @param deleteFile
	 *            要删除的文件
	 * @param sftp
	 */
	public void delete(String directory, String deleteFile, ChannelSftp sftp) {
		try {
			sftp.cd(directory);
			sftp.rm(deleteFile);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void disconnected(ChannelSftp sftp){
		if (sftp != null) {
			try {
				sftp.getSession().disconnect();
			} catch (JSchException e) {
				e.printStackTrace();
			}
			sftp.disconnect();
		}
	}
}

 


在jsch自带的例子中,有一个可以根据密钥生成公钥的类,叫做UserAuthPubKey.java, 且带有图形界面。有用到的可以自己试试。

 

分享到:
评论
1 楼 candou 2013-12-02  
jsch
您好,您的jsch是那个版本嗯?

相关推荐

    java上传文件到linux服务器,操作linux服务器上文件,下载linux服务器文件,删除linux服务器文件

    本篇文章将深入探讨如何使用Java来实现对Linux服务器的文件上传、操作、下载和删除,以及如何借助ganymed-ssh2库实现远程操作。 首先,让我们了解基础概念。Linux服务器是一种基于Linux操作系统并提供网络服务的...

    用java写的SFTP代码

    用java实现的Tftp(Sftp)客户端与服务器程序。 在这个程序中用到了一个“状态”的机制:客户端与服务器端在开始运行时有相同的状态,通过用户的输入或程序内部运行的机制,程序可以转到不同的状态,在不同的状态下...

    java swing做的sftp同步软件

    Java Swing 是Java平台上的一个图形用户界面(GUI)工具包,它是Java标准版(Java SE)的一部分,用于创建桌面应用程序。在"java swing做的sftp同步软件"这个项目中,开发人员利用Swing构建了一个用户界面,使得用户...

    JAVA SFTP文件上传、下载及批量下载实例

    在上面的示例代码中,我们创建了一个SFTPUtils类,其中包含了连接SFTP服务器、上传文件、下载文件等方法。这些方法使用JSch库来实现SFTP的功能。 在实际应用中,我们可以根据需要封装成一个util类,提供给其他应用...

    JSch - Java实现的SFTP(文件上传详解篇)

    JSch - Java 实现的 SFTP(文件上传详解篇) JSch 是 Java Secure Channel 的缩写,JSch 是一个 SSH2 的纯 Java 实现。JSch 允许您连接到一个 SSH 服务器,并且可以使用端口转发、X11 转发、文件传输等,当然您也...

    java 导出csv文件并上传sftp

    结合以上两个部分,你就可以在Java程序中实现从数据导出到CSV文件,再到SFTP服务器的完整流程。univocity-parsers和JSCH是强大的工具,能够帮助你高效、安全地处理数据传输任务。在实际项目中,你可能还需要考虑错误...

    java实现sftp文件夹上传

    JSch是一个纯Java实现的SSH2库,它允许你连接到一个SSH服务器,执行命令,以及通过SFTP传输文件。因此,确保在项目中添加JSch库。 ```java <groupId>com.jcraft</groupId> <artifactId>jsch <version>0.1.55 `...

    java操作sftp的工具类(JSch)

    Java操作SFTP(Secure File Transfer ...总之,JSch库为Java开发者提供了一个强大的工具,使得与SFTP服务器交互变得简单而直观。结合`SftpUtil`工具类,可以方便地集成SFTP操作到Java应用程序中,实现文件的安全传输。

    Java_SFTP.rar_java sftp_java编写sftp_sftp_sftp ja_sftp java

    用java写的SFTP代码,用java实现的Tftp(Sftp)客户端与服务器程序。在这个程序中用到了一个“状态”的机制:客户端与服务器端在开始运行时有相同的状态,通过用户的输入或程序内部运行的机制,程序可以转到不同的状态...

    JAVA通过SFTP实现远程上传下载demo代码

    JSch是一个纯Java实现的SSH2库,它允许Java应用程序连接到SFTP服务器,执行文件传输操作。在你的压缩包中,已经包含了所需的JSch库。 以下是一个基本的SFTP连接、上传和下载文件的Java代码示例: ```java import ...

    JavaSFTP上传文件

    在Java编程中,SFTP(Secure File Transfer Protocol)是一种安全的文件传输协议,常用于在服务器之间或客户端与服务器之间进行文件的上传和下载。Java提供了多种库来支持SFTP操作,例如JSch(Java Secure Channel)...

    jsch.jar及实现代码 SftpUtil.java java使用sftp实现上传下载文件

    `jsch.jar`是一个Java库,它提供了实现SSH2协议的接口,包括SFTP操作。在这个场景中,我们将详细讨论如何使用`jsch.jar`库以及提供的`SftpUtil.java`工具类来实现在Java中执行SFTP任务。 首先,`jsch.jar`是Java ...

    java版SFTP实现示例(使用jsch)

    JSch是一个纯Java实现的SSH2库,它允许Java应用程序连接到支持SSH协议的服务器,执行SFTP操作。`jsch-0.1.43.jar`是JSch库的JAR文件,包含所有必要的类和方法来处理SSH连接和SFTP会话。 首先,我们需要在项目中引入...

    java实现sftp的上传下载

    SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的...

    java使用sftp操作样例 包含jar和代码

    Java使用SFTP(Secure File Transfer Protocol)进行文件操作是一种常见的任务,特别是在远程服务器间安全传输文件时。SFTP是SSH(Secure Shell)协议的一部分,提供了一种加密的网络通信方式,确保了数据在传输过程...

    java ftp服务器copy命令实现

    java程序调用API 实现在ftp内文件夹和文件的拷贝,ftp服务器之间的文件和文件夹的拷贝 欢迎来群:41229007 QQ:119346711讨论

    SFTP定时扫描本地文件上传到Linux服务器

    4. **配置文件管理**:Java程序可能需要读取配置文件来获取SFTP服务器的地址、用户名、密码或私钥等连接信息,这可以通过Java的`Properties`类或者第三方库如Apache Commons Configuration实现。 5. **状态判断**:...

    基于Java的用Java写的SFTP代码.zip

    总之,Java和JSch库结合为开发人员提供了一种强大且灵活的方式,可以在Java应用程序中实现SFTP功能,无论是进行简单的文件传输还是复杂的文件管理任务。通过深入理解和实践,你可以熟练掌握这一技术,提升你的软件...

    java SFTP上传所需jar和秘钥工具

    1. **JSch (Java Secure Channel)**: JSch 是一个纯Java实现的SSH2库,它允许用户执行SFTP(Secure File Transfer Protocol)操作。SFTP是基于SSH协议的文件传输协议,提供了安全的文件传输能力。JSch-0.1.54.jar是...

Global site tag (gtag.js) - Google Analytics