Windows 命令行中的 SFTP(SSH File Transfer Protocol)是一种通过安全 shell 连接进行文件传输的协议,它提供了加密的数据传输和身份验证机制,确保文件在传输过程中的安全性,与传统的 FTP 协议相比,SFTP 更安全,因为它通过 SSH 隧道传输数据,避免了明文传输的风险,在 Windows 系统中,虽然默认的命令提示符(CMD)不支持 SFTP 命令,但用户可以通过内置的 PowerShell 或第三方工具(如 OpenSSH 客户端)来实现 SFTP 功能。

使用 PowerShell 进行 SFTP 传输
Windows 10 和 Windows 11 系统中,PowerShell 是一个强大的命令行工具,但默认情况下并不直接支持 SFTP 命令,用户可以通过调用第三方工具(如 OpenSSH 的 sftp.exe)或使用 PowerShell 脚本来实现 SFTP 传输,以下是基本步骤:
-
安装 OpenSSH 客户端:
如果系统中尚未安装 OpenSSH 客户端,可以通过“设置”>“应用”>“可选功能”>“添加功能”搜索并安装“OpenSSH 客户端”。 -
使用
sftp.exe命令:
安装完成后,可以通过 PowerShell 或 CMD 调用sftp.exe,连接到远程 SFTP 服务器的命令为:sftp username@hostname
连接后,会提示输入密码,或通过 SSH 密钥进行身份验证,连接成功后,可以使用以下命令进行文件操作:
(图片来源网络,侵删)ls:列出远程目录内容get:下载文件(如get remote_file.txt local_file.txt)put:上传文件(如put local_file.txt remote_file.txt)mkdir:创建远程目录exit:退出 SFTP 会话
使用第三方工具(如 WinSCP 或 FileZilla)
对于不习惯命令行操作的用户,可以使用图形化工具如 WinSCP 或 FileZilla,它们支持 SFTP 协议并提供直观的界面,但如果需要自动化脚本或批量操作,命令行工具仍然是更好的选择。
常见 SFTP 命令及用途
以下是一些常用的 SFTP 命令及其功能说明:
| 命令 | 功能描述 | 示例 |
|---|---|---|
ls |
列出远程目录内容 | ls -l(显示详细信息) |
cd |
切换远程目录 | cd /home/user |
get |
下载远程文件 | get file.txt C:\local\file.txt |
put |
上传本地文件 | put C:\local\file.txt /home/user/file.txt |
mkdir |
创建远程目录 | mkdir new_folder |
rm |
删除远程文件 | rm file.txt |
rmdir |
删除远程目录 | rmdir empty_folder |
pwd |
显示当前远程目录 | pwd |
help |
显示帮助信息 | help |
自动化脚本示例
如果需要频繁进行 SFTP 传输,可以编写 PowerShell 脚本调用 sftp.exe,以下脚本实现了自动上传文件的功能:
$sftpArgs = "-b $((Get-Location).Path)\sftp_commands.txt") username@hostname" sftp $sftpArgs
sftp_commands.txt 是一个包含 SFTP 命令的文本文件,

put local_file.txt /home/user/remote_file.txt
exit
相关问答 FAQs
如何在 Windows 命令行中避免每次输入 SFTP 密码?
答:可以通过配置 SSH 密钥对实现免密登录,使用 ssh-keygen 生成密钥对,然后将公钥(id_rsa.pub)上传到远程服务器的 ~/.ssh/authorized_keys 文件中,之后,使用 sftp -i private_key_path username@hostname 命令即可通过密钥认证连接,无需输入密码。
SFTP 传输过程中如何显示进度条?
答:默认的 sftp.exe 不支持进度条显示,但可以通过第三方工具(如 lftp 或 pscp)实现,使用 pscp.exe(PuTTY 的 Secure Copy 工具)时,可以通过 -v 参数显示详细传输进度:
pscp -v -P 22 local_file.txt username@hostname:/remote/path/
也可以在 PowerShell 脚本中结合 Write-Progress 自定义进度显示逻辑。
