SFTP封装 - Sftp
# SFTP封装 - Sftp
介绍
SFTP (Secure File Transfer Protocol) 是一种用于安全传输文件的协议。它基于 SSH (Secure Shell) 协议,能够在不安全的网络中安全地传输文件。相比传统的 FTP,SFTP 提供了更高的安全性,因为它采用了加密技术来保护数据和认证信息。虽然加密技术可能导致传输效率低于 FTP,但在对网络安全性要求较高的场景中,SFTP 是一个更好的选择。
# 依赖引入
使用 SFTP 功能需要引入 jsch
依赖。该库由 JCraft 提供,支持 SSH 连接和文件传输。
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>${jsch.version}</version>
</dependency>
1
2
3
4
5
2
3
4
5
提示:请根据项目需求选择合适的版本,确保与 Hutool 的版本兼容。
# 1. 快速开始
Sftp
是 Hutool 对 jsch
库的封装,提供了简单的 API 来进行 SFTP 文件操作,包括文件上传、下载和目录切换。
# 使用 SFTP 进行文件上传和下载
import cn.hutool.extra.ssh.JschUtil;
import com.jcraft.jsch.Sftp;
public class SftpExample {
public static void main(String[] args) {
// 创建 SFTP 连接,参数为服务器地址、端口、用户名和密码
Sftp sftp = JschUtil.createSftp("172.0.0.1", 22, "root", "123456");
try {
// 切换到远程服务器上的指定目录
sftp.cd("/opt/upload");
// 上传本地文件到远程服务器
sftp.put("e:/test.jpg", "/opt/upload");
// 下载远程服务器上的文件到本地
sftp.get("/opt/upload/test.jpg", "e:/test2.jpg");
} finally {
// 关闭连接,释放资源
sftp.close();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
代码解析:
JschUtil.createSftp(String host, int port, String username, String password)
:创建一个 SFTP 连接。host
:SFTP 服务器地址。port
:SFTP 服务器端口,默认是 22。username
:用于登录的用户名。password
:用户密码。
sftp.cd(String directory)
:切换到指定的远程目录。directory
:要切换的目录路径。
sftp.put(String src, String dst)
:将本地文件上传到远程服务器。src
:本地文件路径。dst
:远程服务器的文件路径。
sftp.get(String src, String dst)
:从远程服务器下载文件到本地。src
:远程服务器的文件路径。dst
:本地文件路径。
sftp.close()
:关闭 SFTP 连接,释放资源。
适用场景:
- 需要在安全环境中传输敏感文件。
- 需要在生产环境中替代不安全的 FTP 协议。
# 2. 实际开发中的应用场景
- 定期文件备份:可以通过 SFTP 定期将本地的重要文件上传到远程服务器进行备份,确保数据安全。
- 跨服务器文件同步:在多服务器部署中,使用 SFTP 可以实现不同服务器间的数据同步。
- 企业内网文件传输:企业内网通常对安全性要求较高,使用 SFTP 可以确保在传输过程中的数据安全。
# 3. 常见问题
- 连接超时或失败:请确保服务器支持 SSH 协议,且防火墙没有阻挡 22 端口。
- 权限问题:如果出现权限不足的错误,请确认用户在目标路径下有读写权限。
- 传输速度较慢:由于 SFTP 使用了加密技术,在传输大文件时速度可能较慢。可以根据实际情况调整网络和服务器配置。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08