核心要点
最重要的一点是:Windows 自带的 cmd.exe 中并没有原生内置 sftp 命令。

sftp (SSH File Transfer Protocol) 是一个独立的客户端程序,通常随 OpenSSH 服务器/客户端软件包一起提供,要在 cmd 中使用 sftp,你需要先确保你的 Windows 系统上安装了它。
第1步:检查并安装 OpenSSH 客户端
大多数现代 Windows 10/11 系统已经默认安装了 OpenSSH 客户端,你可以通过以下方式检查:
- 打开 命令提示符 (
cmd) 或 PowerShell。 - 输入以下命令并按回车:
sftp -V
- 如果看到版本信息(
OpenSSH_for_Windows_8.1p1, OpenSSL 1.1.1k 25 Mar 2025),说明你已经安装好了,可以直接跳到第2步。 - 如果提示
'sftp' 不是内部或外部命令,也不是可运行的程序或批处理文件,说明你需要安装它。
- 如果看到版本信息(
如何安装 OpenSSH 客户端?
通过设置应用(推荐)
- 打开 设置 > 应用 > 可选功能。
- 点击 添加功能。
- 在搜索框中输入
OpenSSH。 - 找到 OpenSSH 客户端,点击 安装。
通过 PowerShell(以管理员身份运行)

- 在开始菜单搜索
PowerShell,右键点击并选择 以管理员身份运行。 - 输入以下命令并回车:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
- 等待安装完成。
第2步:了解 SFTP 命令的基本语法
安装成功后,你就可以在 cmd 中使用 sftp 了,其基本语法如下:
sftp [用户名@]主机名 [端口号]
[用户名@]: 可选,你的 SFTP 服务器用户名,如果不提供,命令会提示你输入。主机名: SFTP 服务器的 IP 地址或域名(168.1.100或ftp.example.com)。[端口号]: 可选,SFTP 服务的端口号,默认是22,如果你的服务器使用了非标准端口,需要在这里指定。
第3步:SFTP 交互式会话常用命令
当你成功连接到 SFTP 服务器后,会进入一个交互式命令行环境,这里的命令与传统的 FTP 有些相似,但更强大、更安全。
连接示例
sftp myuser@192.168.1.100
系统会提示你输入 myuser 用户的密码,输入正确后,你将看到 sftp> 提示符。
常用 SFTP 命令列表
| 命令 | 描述 | 示例 |
|---|---|---|
ls |
列出当前远程目录下的文件和文件夹 | ls -l (显示详细信息) |
cd |
切换远程目录 | cd /var/www/html |
pwd |
显示当前所在的远程目录路径 | pwd |
get |
从远程下载文件到本地 | get remote_file.txt get -r remote_folder (下载整个目录) |
put |
从本地上传文件到远程 | put local_file.txt put -r local_folder (上传整个目录) |
mkdir |
在远程服务器上创建新目录 | mkdir new_directory |
rmdir |
删除远程的空目录 | rmdir empty_directory |
rm |
删除远程文件 | rm unwanted_file.txt |
exit 或 bye |
关闭 SFTP 连接,退出会话 | exit |
help 或 |
显示所有可用的 SFTP 命令及其帮助 | help |
第4步:完整操作示例
假设我们要将本地的一个文件 report.pdf 上传到远程服务器的 /home/myuser/documents/ 目录下。

-
打开
cmd并连接服务器C:\Users\YourName> sftp myuser@192.168.1.100 myuser@192.168.1.100's password: ******** Connected to 192.168.1.100. sftp>
-
检查并切换到远程目标目录
sftp> pwd Remote working directory: /home/myuser sftp> cd documents sftp> pwd Remote working directory: /home/myuser/documents
-
上传本地文件 假设你的
report.pdf文件在C:\Users\YourName\Downloads\目录下,你需要先在cmd中切换到那个目录,或者在put命令中指定完整路径。# 先退出SFTP,在cmd里切换目录,再重新进入SFTP(不方便) # 更好的方法是在put命令中使用完整路径 sftp> put C:\Users\YourName\Downloads\report.pdf Uploading C:\Users\YourName\Downloads\report.pdf to /home/myuser/documents/report.pdf report.pdf 100% 250KB 25.0KB/s 00:00 sftp>
文件上传成功。
-
下载一个文件到本地 假设远程服务器上有一个
backup.zip文件,我们想把它下载到C:\Temp。sftp> get backup.zip C:\Temp\backup.zip Downloading /home/myuser/documents/backup.zip to C:\Temp\backup.zip backup.zip 100% 1.2MB 120.0KB/s 00:10 sftp>
-
退出会话
sftp> exit C:\Users\YourName>
第5步:高级用法 - 直接执行命令(非交互式)
你只想执行一个 SFTP 命令而不想进入交互式会话,这时可以使用 batch 模式或 -b 选项。
方法:使用 -b 选项指定一个批处理文件
-
创建一个文本文件(
upload_commands.txt),里面包含你要执行的 SFTP 命令,每行一个。# upload_commands.txt 的内容 put C:\local\file.txt /remote/path/ exit
-
在
cmd中执行以下命令sftp -b upload_commands.txt myuser@192.168.1.100
系统会提示你输入密码,然后依次执行
upload_commands.txt中的命令,执行完后自动退出,这对于自动化脚本(如 Windows 任务计划程序)非常有用。
总结与重要提示
- 先安装:确保你的 Windows 系统上已安装 OpenSSH 客户端。
- 区分本地和远程:在 SFTP 会话中,
ls,cd,pwd等命令操作的是远程服务器,而你的 Windows 命令提示符本身的dir,cd,echo等命令操作的是本地计算机。 - 路径分隔符:远程服务器通常是 Linux/Unix 系统,使用正斜杠 作为路径分隔符,Windows 本地路径使用反斜杠
\。 - 安全性:SFTP 通过 SSH 加密,比传统的 FTP 安全得多,请勿使用明文传输敏感数据的 FTP。
- 图形化工具:如果你觉得命令行不方便,也可以使用图形化的 SFTP 客户端,如 FileZilla, WinSCP, MobaXterm 等,它们提供了更直观的拖拽操作界面。
