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()
相关推荐
China_Yanhy15 分钟前
AWS S3 深度配置指南:每一栏每个选项有什么作用
java·数据库·aws
秃了也弱了。24 分钟前
FASTJSON库:阿里出品java界json解析库,使用与踩坑记录
java·开发语言·json
安全渗透Hacker37 分钟前
参数未校验导致的DOS(服务拒绝)问题典型场景
java·安全·web安全·网络安全·安全性测试
Chan161 小时前
微服务 - Higress网关
java·spring boot·微服务·云原生·面试·架构·intellij-idea
二哈喇子!1 小时前
JavaSE 与 JavaEE 知识点整合
java·servlet·tomcat
之歆1 小时前
Spring AI入门到实战到原理源码-多模型协作智能客服系统
java·人工智能·spring
yyy(十一月限定版)1 小时前
c++(3)类和对象(中)
java·开发语言·c++
IT 行者1 小时前
Spring Security 7 OAuth2 Token 格式选择浅析
java·后端·spring
shughui1 小时前
最新版IntelliJ IDEA下载+安装+汉化(详细图文)
java·ide·intellij-idea