一、背景

在开发应用软件的过程中,广泛使用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(); } }

转载于:https://www.cnblogs.com/telwanggs/p/7448534.html

SFTP环境搭建及客户代码调用公共方法封装相关推荐

  1. FTP环境搭建及客户代码调用公共方法封装

    一.背景 大型系统架构往往被分解为多个独立可运行的组件, 以满足性能.可靠性.可扩展性的需求.多个组件间的数据交互往往采用两种方式:小量数据通过Sock函数.RMI.WebService等接口方式传递 ...

  2. Angularjs调用公共方法与共享数据

    这个问题场景是在使用ionic开发页面的过程中发现,多个页面对应的多个controller如何去调用公共方法,比如给ionic引入了toast插件,如何将这个插件的调用变成公共方法或者设置成工具类,因 ...

  3. Winform C#客户端调用接口方法封装

    Winform C#客户端调用接口方法封装 编码中,偶尔需要调用其他方提供的API或者其他端交互的API.封装了常用的调用的get请求与post的请求. 接口返回值为Json,复制返回值通过Visua ...

  4. Linu的sftp环境搭建

    sftp和ftp是两种不同的文件传输协议,sftp是基于ssh协议的加密ftp传输协议,是作为SSH2的一个子服务工作的,只要sshd服务器启动了它就可用.vsftpd是一款ftp服务器,支持ftp协 ...

  5. Angular中怎样创建service服务来实现组件之间调用公共方法

    场景 Angular介绍.安装Angular Cli.创建Angular项目入门教程: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail ...

  6. python环境安装opencv,Python环境搭建之OpenCV的步骤方法

    一.openCV介绍 Open Source Computer Vision Library.OpenCV于1999年由Intel建立,如今由Willow Garage提供支持.OpenCV是一个基于 ...

  7. 高通Hexagon环境搭建和camera_streaming example运行方法

    搭建Hexagon环境可以在windows和linux下进行,本文档以linux虚拟机环境搭建Hexagon环境说明: 首先是在Linux环境下安装QPM(Qualcomm Package Manag ...

  8. python调用公共方法_common: 这是一个Python的公共工具类,集成了各种主要的python常用方法...

    common 介绍 这是一个Python的公共工具类,集成了各种主要的python常用方法. 本人是做java开发的,学习python很多情况下是把他当做一个脚本来使用,在使用的过程中,发现很多的功能 ...

  9. ORACLE DataGuard环境搭建详细步骤(新方法)

    一:实验环境介绍 ***鉴于生产环境均采用64位系统和数据库软件,本实验也将采用这个标准***采用vmware workstation 10(版本随意,我用的10)虚拟机软件作为安装平台对于真机的要求 ...

最新文章

  1. 过去一周AI领域有哪些新鲜事?看这一篇就够了
  2. LINUX 使用tcgetattr函数与tcsetattr函数控制终端一
  3. Python慢,为啥还有大公司用?
  4. flink的savepoint实验-java
  5. Windows 10 Creators Update [ISO官方镜像][15063][1703][x64][x86][创意者更新正式版]
  6. 解决file.seek()读取文件报错:AttributeError: ‘str‘ object has no attribute ‘seek‘
  7. Tomcat 添加为系统服务 开机自动启动
  8. 前端笔记-201805
  9. .NET报表控件TeeChart使用教程:构建图表
  10. IDEA中TODO的使用、配置和设置TODO过滤器
  11. iOS 字体集(图文并茂)
  12. SQLServer中ADO,OLEDB,ODBC的区别
  13. EAUML日拱一卒-微信小程序实战:位置闹铃 (8)-WXML条件渲染
  14. C语言实现简单的四则运算计算器
  15. 深入浅出CChart 每日一课——快乐高四第五十八课 大道至简,炫彩界面库之接口代码优化
  16. 访FreeWheel总架构师邓就庆:架构与成长之道
  17. Codeforces 456 A. Laptops
  18. 用这个酷炫数据地图,老板口中别人家的可视化大屏你也能搞定
  19. 使用容器方式进行编译的经验和技巧小结
  20. 【AI选股】如何通过python调用wencai包实现AI选股(小白也能学会)

热门文章

  1. (15)QuartusII 17.1开发流程(FPGA不积跬步101)
  2. (147)FPGA面试题-Verilog移位相加实现乘法(二)
  3. linux系统oracle启动过程,Linux主机下配置Oracle 10G自动启动过程记
  4. mysql memory优点_MySQL Memory存储引擎:优势及性能测试
  5. 有源蜂鸣器的驱动设计
  6. STM32使用DMA接收串口数据
  7. STM32-通用定时器-PWM输出
  8. war压缩命令_BetterZip mac版(超强解压缩软件)
  9. STM32F103系列实战之通用同步异步收发器(USART)
  10. 今日初学C语言写的几个程序。