Java实现SFTP传输

一、SFTP是什么?

SFTP(SSH File Transfer Protocol)是一种基于SSH(安全外壳)的安全的文件传输协议,使用SFTP协议可以在文件传输过程中提供一种安全的网络的加密算法,从而保证数据的安全传输

SFTP在Linux操作系统中,默认的端口是22,传输提供了密码和密钥验证机制,可以有效防止传输过程的威胁和公技

1.1 SFTP验证连接方式

  • 账户密码验证:使用账户ID和密码进行验证,凭据验证过程中是加密的。

  • SSH密钥验证:通过SSH密码进行验证。

  • 账户密码+SSH密钥混合验证:需要满足两种验证,才可以进行连接

1.2 SFTP文件传输过程


原文链接:什么是SFTP

二、实现步骤

1、建立sftp连接

java 复制代码
   public void initSession(String sHost, int iPort, String sUserName, String sPassword) throws JSchException {

            // JSch库来建立与SFTP服务器的连接
            JSch jSch = new JSch();
            this.session = jSch.getSession(sUserName,sHost,iPort);//getSession()建立与sftp服务器的会话
            this.session.setPassword(sPassword);    
            this.session.connect();// 连接sftp服务器

    }

2、设置传输参数

java 复制代码
    public void initChannelSftp() throws JSchException{
        // 打开一个sftp通道,并将其转化为ChannelSftp对象
        this.sftp = (ChannelSftp) this.session.openChannel("sftp");
        this.session.connect();
    }

3、打开本地文件

java 复制代码
// 将要传输的文件打开为输入流 
    String localFilePath ="文件路径";
    InputStream inputStream = new FileInputStream(localFilePath);
    }

4、创建远程文件

java 复制代码
// 在sftp服务器上创建远程文件
String remoteFilePath = "";
sftp.cd("")// 远程文件所在根目录
sftp.put(localFilePath, remoteFilePath)

5、上传文件

java 复制代码
// 将本地文件写入到远程文件中
sftp.put(localFilePath, remoteFilePath)

6、关闭文件

java 复制代码
inputStream.close()
相关推荐
softbangong19 小时前
829-批量提取各子文件夹下文件到一级目录
java·服务器·前端·自动化工具·批量文件处理·文件提取工具·文件夹整理
魑-魅-魍-魉19 小时前
Maven 构建报错:无法连接私有仓库及依赖传输失败
java·maven
小王不爱笑13219 小时前
Java 泛型详解
java·windows·python
ulias21219 小时前
C++ 异常处理机制
java·开发语言·c++
大阿明19 小时前
Spring BOOT 启动参数
java·spring boot·后端
程序员小郭8319 小时前
Spring Ai 05 ChatClient Advisor 实战(日志、提示词增强、内容安全)
java·开发语言·前端
hutengyi19 小时前
Spring Boot 实战篇(四):实现用户登录与注册功能
java·spring boot·后端
u01339452719 小时前
How to Run sample.war in a Tomcat Docker Container
java·docker·tomcat
splage19 小时前
Spring Framework 中文官方文档
java·后端·spring