在 PowerShell 中实现 SFTP 操作
2026-06-12
SFTP(安全文件传输协议)是一种在本地服务器与远程服务器之间安全传输文件的实用工具。与其前身FTP不同,SFTP使用SSH(安全外壳协议)对命令和数据进行加密,从而确保敏感信息在传输过程中得到保护。无论您使用的是Linux、Windows还是macOS系统,SFTP均能为您提供一种可靠的方式来访问、传输及管理远程服务器上的文件。它支持多种操作,包括上传和下载文件、创建目录以及列出目录内容等。
什么是SFTP命令?
SFTP命令是一组用于通过与远程服务器通信来安全传输文件的指令。这些命令属于安全文件传输协议(SFTP),该协议集成于安全外壳(SSH)协议套件中,为文件传输活动提供加密通道。这种加密机制可确保传输的数据以及用于传输的命令均受到保护,防止未经授权的访问或窃听。
SFTP 命令允许用户安全地在远程服务器上上传、下载和管理文件。这包括创建和浏览目录、列出文件,甚至修改文件权限。对于开发人员、系统管理员以及任何需要确保网络传输数据机密性和完整性的用户而言,SFTP 命令是一项必不可少的工具。
通过使用SFTP命令,组织和个人能够保护敏感信息免受外部威胁,使其成为跨不同操作系统和平台安全传输文件的首选方法。因此,深入理解并熟练运用这些命令,对保障传输中数据的安全至关重要。
SFTP 与 FTP 和 SCP 的对比
安全高效地传输文件需要选择合适的协议。以下是对 SFTP、FTP 和 SCP 的对比分析,重点说明它们在安全性及适用场景方面的差异。
Feature
SFTP (Secure File Transfer Protocol)
FTP (File Transfer Protocol)
SCP (Secure Copy Protocol)
安全 | 高——使用 SSH 加密命令和数据。 | 低——以明文形式传输数据,容易被截获。可使用 SSL/TLS 实现 FTPS 保护。 | 高——使用 SSH 进行安全数据传输,类似于 SFTP。 |
功能 | 功能全面——支持文件上传/下载、目录浏览、文件操作等。 | 基础版——主要用于文件上传和下载,支持使用 FTPS 以实现扩展功能。 | 功能有限——主要专注于文件复制。 |
使用场景 | 适用于安全、多功能的文件管理和传输。 | 适用于敏感度较低的场景或旧系统。FTPS 可确保安全性。 | 适用于无需文件管理功能的简单、安全的文件复制任务。 |
SFTP 提供了一种安全且功能多样的文件传输解决方案,因此在安全性与功能性至关重要的环境中成为首选。FTP 虽然被广泛使用,但其本身缺乏安全性,不过可通过支持 SSL/TLS 的 FTPS 进行增强。SCP 可实现简单而安全的文件复制,但在文件管理功能方面远不如 SFTP 全面。
了解 SFTP 加密
SFTP 在数据传输过程中对其进行加密,防止未授权访问或窃听。SFTP 会话启动时,客户端与服务器通过 SSH 建立安全连接。该连接对传输的命令和数据均进行加密,确保敏感信息保持机密。加密采用先进的算法,以防范数据被截获和解密。
SFTP 通过加密哈希函数确保数据完整性。这些函数会检查传输过程中发送和接收的数据,以验证每个数据包是否完整无缺。如果数据在传输过程中遭到篡改,该协议将检测到篡改行为,并可中止传输,防止数据损坏。
SFTP 身份验证的工作原理是什么?
SFTP 身份验证是一个两步过程,旨在确保只有经授权的用户才能访问服务器。首先,服务器通过密钥交换过程对客户端进行身份验证,以安全地核实客户端的身份。随后,客户端可能需要提供用户名和密码,或使用私钥进行进一步的身份验证。这种双重身份验证机制增强了连接的安全性,并防止未授权访问。
如何在 Windows 上设置 SFTP 服务器?
要在 Windows 上设置 SFTP 服务器,请按以下步骤操作:
1. 安装 OpenSSH 服务器
以管理员身份打开 Windows PowerShell 或命令提示符。然后,使用以下命令安装 OpenSSH 服务器组件:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
2. 安装完成后,使用以下命令启动 SSH 服务:
Start-Service sshdSet-Service -Name sshd -StartupType 'Automatic'
3. 配置防火墙
SFTP 使用 SSH 协议。要允许外部设备访问 SFTP 服务器,您需要在服务器上打开相应的端口。默认情况下,SFTP 使用端口 22,您需在 Windows 防火墙中开放该端口。具体配置步骤如下:
打开Windows Defender 防火墙。
点击“高级设置”。
在左侧窗格中,选择“入站规则”。
在右侧,点击“新建规则”。
选择“端口”,然后点击“下一步”。
选择“TCP”及特定的本地端口(22)。
允许连接。
选择适用的网络类型(通常为“公共”)。
输入规则名称,然后点击“完成”。
4. 创建 SFTP 用户
要在 SFTP 服务器上创建用户,请使用 OpenSSH 命令行工具。打开命令提示符,然后使用以下命令创建新用户:
net user username password /add
将“username”替换为所需的用户名,将“password”替换为用户的密码。
5. 配置 SFTP 访问权限
要限制 SFTP 用户的访问权限,您可以配置 OpenSSH sshd_config 文件。该文件位于 C:\ProgramData\ssh 目录中,可使用文本编辑器进行编辑。您可配置用户的访问权限,例如将其限制在特定目录内。
打开 sshd_config 文件后,找到以下两行:
#Subsystem sftp /usr/lib/openssh/sftp-server#Subsystem sftp internal-sftp
删除注释符号,并按以下方式修改:
Subsystem sftp C:\Windows\System32\OpenSSH\sftp-server.exe
保存文件后,重启 SSH 服务:
Restart-Service sshd
6. 连接到 SFTP 服务器
在另一台计算机上,您可以使用 SFTP 客户端连接到已配置的 SFTP 服务器。可用的 SFTP 客户端应用程序有很多,例如 FileZilla、WinSCP 等。在 SFTP 客户端中,输入服务器的 IP 地址、用户名和密码,并指定端口 22(SFTP 默认端口)以连接服务器。
通过 PowerShell 使用 SFTP 传输大文件
在 PowerShell 中传输大文件时,必须有效管理数据传输速率及错误处理机制。对于大文件,除 FTP 外,还可使用 SFTP 或 SMB 协议。PowerShell 本身不原生支持 SFTP,但可通过第三方库(如 PSSFTP 或 WinSCP)实现 SFTP 文件传输。
以下是使用 WinSCP 通过 PowerShell 上传文件的示例:
下载并安装 WinSCP。在 PowerShell 中使用 WinSCP 的命令行工具。
示例(使用 WinSCP 上传文件):
1. 定义 SFTP 会话和文件上传路径
$session = New-Object WinSCP.Session$session.Open($sessionOptions)
2. 上传文件
$session.PutFiles("C:\path\to\file.txt", "/remote/path/to/file.txt").Check()3. 关闭会话
$session.Dispose()
WinSCP 会话选项配置:
$sessionOptions = New-Object WinSCP.SessionOptions$sessionOptions.Protocol = [WinSCP.Protocol]::Sftp$sessionOptions.HostName = "sftp.example.com"$sessionOptions.UserName = "username"$sessionOptions.Password = "password"
专业且自动化的虚拟机备份解决方案
除了使用 PowerShell 执行 SFTP 任务外,寻求更强大、自动化和集中式备份解决方案的企业还可受益于诸如 Vinchin 备份与恢复 等工具。Vinchin 是备份与灾难恢复解决方案领域的领先提供商,其产品专为支持多种虚拟化平台而设计,包括 VMware、Hyper-V、Proxmox、XenServer 等。凭借重复数据删除、数据压缩及灵活的备份计划等高级功能,Vinchin 帮助企业保障关键数据的安全性与可用性。
Vinchin 的解决方案还支持高效的跨平台备份管理,同时提供本地备份和异地备份功能。它支持多种备份模式,包括完整备份、增量备份和差异备份,助力企业优化存储空间并维持可靠的恢复点目标(RPO)。凭借细粒度恢复、灾难恢复和快速迁移等功能,Vinchin 使企业能够迅速应对数据丢失事件,最大限度减少停机时间。
使用 Vinchin 备份与恢复备份虚拟机仅需 4 个步骤:
1. 选择备份对象。

2. 选择备份目标位置。

3. 配置备份策略。

4. 审核并提交该任务。

Vinchin 备份与恢复软件,已获得数千家企业的信赖,现提供15天免费试用。联系我们,分享您的 IT 需求,即刻获取定制化解决方案。
下载免费试用版
适用于多种数据备份
* 15天全功能免费安全下载
PowerShell SFTP 常见问题解答
1. Windows 上最佳的 SFTP 客户端是什么?
适用于 Windows 的顶级 SFTP 客户端包括 WinSCP(操作简便、支持脚本和自动化)、FileZilla(开源、稳定可靠,支持 FTP/SFTP)以及 Cyberduck(集成云存储、支持在线编辑文件)等。各客户端功能各异,可根据您的具体需求选择——无论是简单的文件传输,还是高级安全功能与云存储管理。
2. SFTP 和 FTP 有什么区别?
SFTP 比 FTP 更安全,因为它使用 SSH 协议通过 22 端口对数据和命令均进行加密,从而实现安全通信。相比之下,FTP 以明文形式传输数据,不进行加密,容易被窃听。此外,FTP 使用 21 端口进行控制连接,并需多个端口进行数据传输;而 SFTP 则仅通过单一的安全连接完成全部操作。
结论
PowerShell 提供了强大的功能,可用于处理各类数据传输任务,包括使用 HTTP、FTP、SFTP 及云存储服务等协议和工具。您可利用它实现文件传输、上传与下载、错误处理以及加密传输等任务的自动化。结合 Windows 任务计划程序,PowerShell 还能执行定时自动化任务,从而大幅提升工作效率。