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()
相关推荐
猿究院--王升1 小时前
jvm三色标记
java·jvm·算法
妮妮学代码2 小时前
c#:TCP服务端管理类
java·tcp/ip·c#
兔老大RabbitMQ2 小时前
git pull origin master失败
java·开发语言·git
探索java2 小时前
Netty Channel详解:从原理到实践
java·后端·netty
tuokuac3 小时前
maven与maven-archetype-plugin版本匹配问题
java·maven
ankleless4 小时前
Spring Boot 实战:从项目搭建到部署优化
java·spring boot·后端
野生技术架构师4 小时前
2025年中高级后端开发Java岗八股文最新开源
java·开发语言
静若繁花_jingjing5 小时前
JVM常量池
java·开发语言·jvm
David爱编程5 小时前
为什么线程不是越多越好?一文讲透上下文切换成本
java·后端
A尘埃5 小时前
Redis在地理空间数据+实时数据分析中的具体应用场景
java·redis