在 Windows 的 cmd.exe (命令提示符) 或 PowerShell 中,sftp 并不是一个像 dir 或 ls 那样的内置命令。

SFTP (SSH File Transfer Protocol) 是一个独立的客户端程序,在 Windows 上,你需要先安装一个提供 sftp 命令行的工具,最常用和推荐的是 PuTTY 套件。
第一步:安装 PuTTY 套件
- 下载:访问 PuTTY 官方下载页面:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
- 下载文件:下载
msi安装包(putty-0.76-installer.msi)。 - 安装:运行安装包,按照向导完成安装,安装程序默认会将
sftp.exe所在的路径添加到系统的PATH环境变量中,这样你就可以在任何地方直接使用sftp命令了。
第二步:基本 SFTP 命令语法
安装完成后,你就可以在 cmd 或 PowerShell 中使用 sftp 命令了。
连接到 SFTP 服务器
这是最基本的用法,用于首次连接。
sftp <username>@<hostname_or_ip>
<username>: 你的 SFTP 服务器用户名。<hostname_or_ip>: 服务器的域名或 IP 地址。
示例:

sftp myuser@example.com # 或者 sftp myuser@192.168.1.100
执行此命令后会发生什么?
- 首次连接提示:如果是第一次连接到该服务器,你会看到如下警告,询问是否信任主机的 RSA 密钥,输入
yes并回车。The authenticity of host 'example.com (93.184.216.34)' can't be established. RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes - 输入密码:连接成功后,系统会提示你输入密码(输入时不会显示任何字符,输入完直接回车)。
myuser@example.com's password: - 进入 SFTP 提示符:登录成功后,你的命令行提示符会变成
sftp>,这表示你已经进入了 SFTP 会话。
第三步:SFTP 会话常用命令
一旦你进入了 sftp> 提示符,就可以使用以下命令来管理文件和目录,这些命令很多与 Linux/Unix 的 ftp 命令相似。
| 命令 | 描述 | 示例 |
|---|---|---|
ls |
列出当前远程目录下的文件和目录 | ls |
cd <path> |
切换远程服务器的目录 | cd /var/www/html |
pwd |
显示当前所在的远程目录路径 | pwd |
get <remote_file> |
下载一个文件从远程服务器到本地 | get myfile.txt |
get -r <remote_dir> |
下载一个目录及其所有内容 | get -r my_project |
put <local_file> |
上传一个文件从本地到远程服务器 | put report.pdf |
put -r <local_dir> |
上传一个本地目录及其所有内容 | put -r my_photos |
mkdir <dirname> |
在远程服务器上创建一个新目录 | mkdir new_folder |
rmdir <dirname> |
删除远程服务器上的一个空目录 | rmdir empty_folder |
rm <filename> |
删除远程服务器上的一个文件 | rm old_file.log |
| 执行本地系统命令 | !dir (查看本地目录), !ls (列出本地文件) |
|
exit 或 bye |
退出 SFTP 会话,返回到本地命令行 | exit |
第四步:完整操作示例
假设你要将本地的 C:\Users\YourUser\Documents\project.zip 文件上传到服务器的 /home/myuser/backups/ 目录下。
步骤 1:打开命令提示符

步骤 2:连接到服务器
sftp myuser@example.com
输入密码后,进入 sftp> 提示符。
步骤 3:在服务器上操作
# 检查当前远程目录 sftp> pwd Remote working directory: /home/myuser # 切换到目标上传目录 sftp> cd backups sftp> pwd Remote working directory: /home/myuser/backups # (可选) 查看目录是否为空 sftp> ls
步骤 4:从本地上传文件
# 上传 project.zip 文件 sftp> put C:\Users\YourUser\Documents\project.zip Uploading project.zip to /home/myuser/backups/project.zip project.zip | 1048576 | 1024 KB/s | 00:00:01 |
步骤 5:验证上传并退出
# 确认文件已上传 sftp> ls project.zip # 退出 SFTP 会话 sftp> exit
第五步:高级用法 (在一条命令中执行)
如果你想在连接后立即执行一个或多个命令,而不是进入交互式 sftp> 提示符,可以使用 -b (batch file) 选项。
语法:
sftp -b <batch_script_file> <username>@<hostname>
<batch_script_file> 是一个文本文件,里面每行写一个 SFTP 命令。
示例:
假设你有一个名为 upload_commands.txt 的文件,内容如下:
# upload_commands.txt 的内容 cd /home/myuser/backups put C:\Users\YourUser\Documents\project.zip ls exit
然后你可以在命令行中直接执行:
sftp -b upload_commands.txt myuser@example.com
系统会依次执行文件中的命令,最后自动退出,这对于自动化脚本(如 Windows 任务计划程序)非常有用。
- 前提:必须在 Windows 上安装 PuTTY 套件。
- 连接:使用
sftp user@host命令连接。 - 交互:登录后进入
sftp>提示符,使用get,put,ls,cd等命令进行文件传输。 - 自动化:使用
sftp -b script.txt user@host来执行预定义的命令列表,实现非交互式操作。
