`
xm_koma
  • 浏览: 384722 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

sftp协议访问工具类

阅读更多

有些网络环境中,考虑利用更为安全的文件传输协议:sftp

这里顺带整理一个之前编写的sftp的访问工具类:

package com.huaxia.alarm.utils;

import org.apache.log4j.Logger;

import com.huaxia.alarm.beans.FTPConfig;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

/**
 * 
 * @author xum
 * 
 *         sftp工具类
 */
public class SFTPUtil {

	private static final Logger logger = Logger.getLogger(SFTPUtil.class);

	public static final String SFTP_CHANNEL_TYPE = "sftp";

	public static ChannelSftp getSftpConnection(final FTPConfig ftpConfig) {
		ChannelSftp sftp = null;
		try {
			JSch jsch = new JSch();
			Session sshSession = jsch.getSession(ftpConfig.getFtpUserName(),
					ftpConfig.getFtpHost(), ftpConfig.getFtpPort());
			logger.info("SFTP Session created.");
			sshSession.setPassword(ftpConfig.getFtpPassword());
			// Properties sshConfig = new Properties();
			// sshConfig.put("StrictHostKeyChecking", "no");
			// sshSession.setConfig(sshConfig);
			sshSession.setUserInfo(new com.jcraft.jsch.UserInfo() {
				public String getPassphrase() {
					return null;
				}

				public String getPassword() {
					return ftpConfig.getFtpPassword();
				}

				public boolean promptPassphrase(String pArg0) {
					return true;
				}

				public boolean promptPassword(String pArg0) {
					return true;
				}

				public boolean promptYesNo(String pArg0) {
					return true;
				}

				public void showMessage(String pArg0) {
				}
			});
			sshSession.setTimeout(60000);// 连接的Timeout时间
			sshSession.connect();
			Channel channel = sshSession.openChannel(SFTP_CHANNEL_TYPE);
			channel.connect();
			logger.info("Opening Channel...");
			sftp = (ChannelSftp) channel;
			logger.info("Connected to server [" + ftpConfig.getFtpHost()
					+ "] success.");
			return sftp;
		} catch (Exception e) {
			logger.error("Connected to server [" + ftpConfig.getFtpHost()
					+ "] fail, ", e);
			return null;
		}
	}

	public static void closeChannelSftp(ChannelSftp sftp) {
		if (null != sftp) {
			if (sftp.isConnected()) {
				sftp.disconnect();
				logger.info("ChannelSftp [sftp] disconnect success.");
			}
		}
	}
}

  

 

 

用到的第三方jar为:

jsch-0.1.49.jar

 

工具类中只提供了连接和断开连接的方法,至于cd修改当前目录,list等命令,返回的ChannelSftp类中都有对应的方法可供调用。

分享到:
评论

相关推荐

    SFTP上传下载文件工具

    "SFTP上传下载文件工具"通常指的是支持SFTP协议的软件应用,这些应用使得用户能够方便地在本地计算机和远程服务器之间进行文件的上传和下载。描述中提到的"可直接文件夹传输"功能,意味着这款工具不仅支持单个文件的...

    sftp工具服务端 + 参考

    6. **实现文件传输**:SFTP协议定义了一系列的命令,如`OPEN`, `READ`, `WRITE`, `STAT`, `LIST`, `REMOVE`等,通过JSch的API,你可以实现这些命令对应的文件操作。 除了JSch,Apache MINA提供了一个更底层的抽象,...

    sftp的使用

    SecureCRT 是一个功能强大的远程访问工具,支持多种协议,包括 SSH、Telnet、Rlogin 等。它提供了一个图形化的界面,方便用户使用 sftp 协议上传或下载文件。 sftp 是一种安全的文件传输协议,能够在不同主机之间...

    QT实现SSH,sftp

    QT实现SSH和SFTP是基于Qt框架的网络通信技术,主要应用于远程服务器的访问和文件传输。在本文中,我们将深入探讨如何使用QT库来实现SSH(Secure Shell)和SFTP(Secure File Transfer Protocol)功能,以及如何在...

    NET 1.1 支持SFTP上传的dll文件

    总之,要在.NET 1.1和Visual Studio 2003环境下实现SFTP功能,需要对旧版.NET Framework、C#编程、SFTP协议以及第三方库的使用有深入理解。尽管这是一个相对陈旧的场景,但在某些特定情况下,如维护旧系统或满足特定...

    Java文件传输工具(SFTP、FTP、HTTP上传下载)

    SFTP则是在SSH(Secure Shell)协议上运行的文件传输协议,提供了安全的文件传输能力。Java原生不支持SFTP,因此需要引入第三方库,例如JSch。JSch是一个纯Java实现的SSH2库,它提供了SFTP的接口,可以用来连接到...

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

    ChannelSftp类是JSch实现SFTP的核心类,它封装了SFTP协议的所有操作方法。例如,put()用于文件上传,get()用于文件下载,cd()用于进入指定目录,ls()用于获取指定目录下的文件列表,rename()用于重命名文件等。利用...

    ganymed-ssh2 工具类

    ** ganymed-ssh2 工具类 ** 在IT行业中,远程服务器管理是一项至关重要的任务,而SSH(Secure Shell)协议则是实现安全远程访问的标准方法。ganymed-ssh2是一个开源Java库,它提供了对SSH2协议的全面支持,使得开发...

    sftp直接以url模式读取-----------包括servlet如何借用springproperties取文件

    2. **URL模式读取**: 在Java中,我们可以使用`java.net.URL`类来处理URL资源,但这并不直接支持SFTP协议。为了实现SFTP URL的读取,我们需要自定义`URLStreamHandler`,覆盖`openConnection()`方法来创建SFTP连接。...

    webmethods sftp client

    WebMethods SFTP客户端是一款用于通过安全文件传输协议(SFTP)与远程服务器进行交互的工具。这个客户端是基于Java开发的,并且利用了JSch库来实现SFTP连接和文件操作。JSch是一个开放源码的Java库,它提供了SSH2...

    telnet、ftp、sftp、mysql、钉钉推送.rar

    通过`paramiko.SSHClient()`创建客户端,`connect()`建立连接,`sftp`属性访问SFTP服务,进行文件和目录的操作。SFTP比FTP更安全,因为它使用加密来保护数据传输。 4. **MySQL数据库操作**: MySQL是一种广泛使用的...

    XferServer_sftp_uat

    XferServer_sftp_uat是一个基于Perl编程语言构建的文件传输服务器,特别针对SFTP(Secure File Transfer Protocol)协议进行了优化,以确保数据在传输过程中的安全性。在本文中,我们将深入探讨Perl在这一领域的应用...

    Linux服务器远端访问工具

    "Linux服务器远端访问工具"指的是能够帮助用户从本地计算机通过网络连接到远程Linux服务器的软件。这些工具提供了图形化的用户界面(GUI)或者命令行界面(CLI),使得管理员可以便捷地执行各种管理任务,如文件传输...

    http、https、gzip、ftp、fasdDFS工具类

    尽管FTP功能强大,但同样缺乏安全特性,因此通常在传输敏感文件时,人们更倾向于使用FTP的安全版本,如SFTP(SSH文件传输协议)或FTPS(FTP over SSL/TLS)。 fasdDFS(快速分布式文件系统)是一种开源的分布式文件...

    ExpanDrive(原SftpDrive) v1.84

    5. **多种协议支持**:除了SSH,ExpanDrive还支持SFTP(SSH File Transfer Protocol)、FTP、FTPS以及WebDAV,满足不同类型的服务器连接需求。 6. **文件预览**:用户可以直接在ExpanDrive中预览文本文件、图片和...

    swift-一个用于iOS和macOS的SSH和SFTP客户端

    Swift的URLSession类是处理网络请求的核心,它支持HTTP/HTTPS协议,但对于SSH/SFTP,开发者可能需要使用专门的库来处理非HTTP协议的通信。 在压缩包文件ColdGrub1384-Pisth-39d01a6中,我们可以期待找到Pisth项目的...

    7.linux远程连接工具类 SSH

    Linux远程连接工具类SSH是一种广泛使用的通信协议,它允许用户在本地计算机上安全地操作远程Linux系统。SSH,全称为Secure Shell,旨在提供加密的网络服务,特别适用于管理服务器、执行命令、传输文件等场景。在开发...

    操作Linux的工具类(包含文件上传和界面操作)

    "操作Linux的工具类(包含文件上传和界面操作)"这个主题主要涵盖了三款强大的工具:Xshell6、Xftp和Xlpd,这些工具极大地简化了远程Linux系统的管理任务。这些工具都是由中国的软件公司开发,提供了便捷的中文界面,...

    达梦驱动和工具

    2. **XFTP**:XFTP是一款流行的FTP文件传输软件,支持SFTP协议,提供安全的文件传输。在数据库管理场景中,XFTP可以帮助管理员上传或下载数据库相关的配置文件、日志文件,或者在不同服务器间迁移数据,是数据库运维...

    linux 连接工具

    在Linux操作系统中,连接工具是用于远程访问和管理系统的软件,它们使得用户可以在本地计算机上操作远端服务器,实现文件传输、系统管理等任务。本文将深入探讨Linux下的连接工具,特别是与FTP相关的操作和SecureCRT...

Global site tag (gtag.js) - Google Analytics