Java SFTP | 在 Java 中使用 JSCH 进行 SFTP 文件传输

2025年3月17日 | 阅读 3 分钟

在数字世界中,客户端到服务器以及服务器到客户端的文件传输是一个典型的过程,因为文件大小可能很大,或者可能存在未经授权的访问。因此,保护文件和数据免受授权变得至关重要。SFTP 在网络上传输文件时确保了安全性。在本节中,我们将讨论如何使用SSH 文件传输协议 (SFTP) 在 Java 中将文件从远程服务器传输到本地系统,反之亦然。

SFTP

SFTP 代表 SSH 文件传输协议。它取代了旧的FTP协议。它运行在 SSH 协议之上。它支持 SSH 的全部安全性和身份验证功能。在几年内,它还将取代FTPS协议。没有专门的 SFTP 端口;SFTP 使用普通的 SSH 端口,即22

Java SFTP | File Transfer Using SFTP in Java JSCH

SFTP 的特性

  • 它能防止密码嗅探
  • 它避免了中间人攻击
  • 使用加密加密哈希函数保护数据完整性。
  • 它验证服务器用户
Java SFTP | File Transfer Using SFTP in Java JSCH

许多 SSH 客户端支持 SFTP

  • Tectia SSH 客户端
  • WinSCP
  • FileZilla
  • PuTTY
  • Cyberduck

Java 开发人员的 SFTP 库

  • JCraft JSch
  • SSHJ

使用 JSch 库

JSch 库提供了get()put()方法来在服务器和客户端之间传输文件。put() 方法用于将文件从本地系统传输到远程服务器。

将 jsch 依赖添加到pom.xml文件。

它会自动将 jsch-0.1.55.jar 文件下载到项目目录。

我们使用 put() 方法将文件从本地主机传输到服务器。

我们使用 get() 将文件从服务器下载到本地主机。

身份验证密码

公钥和私钥身份验证使用公钥身份验证与 SSH

让我们看看如何在程序中使用密钥。

让我们看下面的 JSch 示例,通过 SSH 密码进行身份验证,将文件从本地系统传输到远程服务器 1.2.3.4。

SFTPFileTransfer.java

输出

Done

请注意,Jar 文件应正确附加,否则会出现错误。