博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SFTP环境搭建及客户代码调用公共方法封装
阅读量:6281 次
发布时间:2019-06-22

本文共 2666 字,大约阅读时间需要 8 分钟。

一、背景

在开发应用软件的过程中,广泛使用FTP在各子系统间传送文本数据。但FTP存在安全问题,开放到外网存在安全漏洞,容易被攻击。替换方案是使用SFTP,SFTP提供更高的安全性,当然传输的效率也会有影响。实际使用中使用FTP还是SFTP需要根据系统使用的环境综合评估决定。本文档在继上一篇描述了FTP环境构建的基础上,进一步描述SFTP的环境构建和客户端调用公共方法的封装。

二、SFTP Server环境搭建

SFTP服务端工具很多。作为研究用,选择 Core FTP Server,工具小巧使用简单(选择的是免费min版,只同时支持一个客户端连接)。下载链接:http://www.coreftp.com/server/index.html

三、客户端调用公共基础类封装

3.1 添加jsch-0.1.51.jar

3.2 公共代码封装

/** *  * SFTP访问公共类 * * @author elon * @version 1.0, 2015年10月31日 */public class SFTPUtility { // SFTP连接参数 private String sftpIP; private int sftpPort; private String userName; private String password; // 超时时间 private int timeout; // SFTP会话 private Session sftpSession; // SFTP通道 private ChannelSftp sftpChannel; public SFTPUtility(String sftpIP, int sftpPort, String userName, String password, int timeout) { this.sftpIP = sftpIP; this.sftpPort = sftpPort; this.userName = userName; this.password = password; this.timeout = timeout; sftpSession = null; sftpChannel = null; } /** * * 链接SFTP服务器。 * * @throws JSchException * @throws SftpException */ public void connect() throws JSchException, SftpException { JSch jsch = new JSch(); // 创建会话连接 sftpSession = jsch.getSession(userName, sftpIP, sftpPort); // 设置密码 sftpSession.setPassword(password); sftpSession.setConfig("StrictHostKeyChecking", "no"); sftpSession.setTimeout(timeout); // 创建会话 sftpSession.connect(); // 打开SFTP通道 sftpChannel = (ChannelSftp)sftpSession.openChannel("sftp"); sftpChannel.connect(); sftpChannel.setFilenameEncoding("UTF-8"); } /** * 上传文件到SFTP服务器 * @param localFilePath 待上传的本地文件完整路径 * @param sftpFileName 上传后保存到SFTP服务器的名称(一般和本地文件名一致) * @throws SftpException * @throws IOException IO异常 */ public void upLoadFile(String localFilePath, String sftpFileName) throws SftpException { sftpChannel.put(localFilePath, sftpFileName); } /** * 从SFTP服务器下载文件到本地。 * @param sftpFileName 所下载文件在FTP服务器上的名称 * @param localFilePath 下载后文件保存的完整路径(文件名一般和SFTP上保存的文件一致) * @throws SftpException * @throws IOException IO异常 */ public void downLoadFile(String sftpFileName, String localFilePath) throws SftpException { sftpChannel.get(sftpFileName, localFilePath); } /** * 关闭SFTP连接 * @throws IOException */ public void disconnet() throws IOException { if (sftpChannel != null) { sftpChannel.disconnect(); } if (sftpSession != null) { sftpSession.disconnect(); } } }

 

四、测试函数

public class TestMain{    public static void main(String[] args) throws JSchException, SftpException, IOException { SFTPUtility sftp = new SFTPUtility("10.70.69.69", 22, "sftp", "sftp", 100000); sftp.connect(); sftp.upLoadFile("D:/TEMP/V1R2C10分配 - 副本.xlsx", "V1R2C10分配 - 副本.xlsx"); sftp.downLoadFile("V1R2C10分配 - 副本.xlsx", "D:/TEMP/V1R2C10分配 - 副本 new.xlsx"); sftp.disconnet(); } }

转载地址:http://vpxva.baihongyu.com/

你可能感兴趣的文章
Vue------第二天(计算属性、侦听器、绑定Class、绑定Style)
查看>>
dojo.mixin(混合进)、dojo.extend、dojo.declare
查看>>
Python 数据类型
查看>>
iOS--环信集成并修改头像和昵称(需要自己的服务器)
查看>>
PHP版微信权限验证配置,音频文件下载,FFmpeg转码,上传OSS和删除转存服务器本地文件...
查看>>
教程前言 - 回归宣言
查看>>
PHP 7.1是否支持操作符重载?
查看>>
Vue.js 中v-for和v-if一起使用,来判断select中的option为选中项
查看>>
Java中AES加密解密以及签名校验
查看>>
定义内部类 继承 AsyncTask 来实现异步网络请求
查看>>
VC中怎么读取.txt文件
查看>>
如何清理mac系统垃圾
查看>>
企业中最佳虚拟机软件应用程序—Parallels Deskto
查看>>
Nginx配置文件详细说明
查看>>
怎么用Navicat Premium图标编辑器创建表
查看>>
Spring配置文件(2)配置方式
查看>>
MariaDB/Mysql 批量插入 批量更新
查看>>
ItelliJ IDEA开发工具使用—创建一个web项目
查看>>
solr-4.10.4部署到tomcat6
查看>>
切片键(Shard Keys)
查看>>