scp (Secure Copy) 是一个在 Linux 和 macOS 系统上广泛使用的命令,用于在本地和远程主机之间安全地复制文件,由于 Windows 10/11 的更新,现在也可以非常方便地使用 scp 了。

核心要点
在 Windows 上使用 scp 主要有两种方式:
-
推荐方式:使用 Windows 内置的 OpenSSH 客户端 (适用于 Windows 10/11)
- 优点:无需安装任何额外软件,与 Linux/macOS 的
scp命令完全兼容,性能好。 - 缺点:仅适用于较新的 Windows 10/11 版本。
- 优点:无需安装任何额外软件,与 Linux/macOS 的
-
传统方式:使用第三方工具 (如 PuTTY 或 Git for Windows)
- 优点:兼容性广,适用于所有 Windows 版本。
- 缺点:需要额外安装和配置,命令可能略有不同。
使用 Windows 内置的 OpenSSH (最推荐)
这是目前最简单、最强大的方法。

检查并安装 OpenSSH 客户端
如果你的 Windows 是最新的版本(通常是在 2025 年 10 月之后更新的),它很可能已经预装了 OpenSSH 客户端,你可以通过以下步骤检查:
- 打开 设置 (
Win+I)。 - 进入 应用 > 可选功能。
- 在功能列表中查找 OpenSSH 客户端。
- 如果找到了,说明已经安装,可以直接跳到第 2 步,如果没有,点击 添加功能,搜索并安装它。
你也可以通过 PowerShell 来检查和安装:
# 检查是否已安装 Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Client*' # 如果未安装,运行此命令进行安装 # Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
使用 scp 命令
安装完成后,直接在 命令提示符、PowerShell 或 Windows Terminal 中使用 scp 命令即可,它的语法和 Linux/macOS 完全一样。
基本语法:
scp [选项] [源文件] [目标地址]
常用选项:
-P:指定远程主机的端口号(注意是大写 P)。-r:递归复制整个目录。-p:保留文件的修改时间、访问时间和权限。-i:指定私钥文件(用于密钥登录)。
实用示例
假设:
- 你的 Windows 本地机:
user-windows-pc - 你的远程 Linux 服务器:
168.1.100(用户名remoteuser, 密码yourpassword) - 要传输的文件:
C:\Users\YourUser\Desktop\report.txt - 要传输的目录:
C:\Users\YourUser\Documents\project_folder
示例 1:从 Windows 下载单个文件到本地
将远程服务器上的 /home/remoteuser/report.txt 下载到 Windows 的当前目录。
# 格式: scp [远程用户]@[远程主机IP]:[远程文件路径] [本地路径] scp remoteuser@192.168.1.100:/home/remoteuser/report.txt .
表示当前目录。
示例 2:从 Windows 上传单个文件到远程服务器
将 Windows 上的 report.txt 上传到远程服务器的 /home/remoteuser/ 目录下。
# 格式: scp [本地文件路径] [远程用户]@[远程主机IP]:[远程目标路径] scp report.txt remoteuser@192.168.1.100:/home/remoteuser/
示例 3:下载整个目录
将远程服务器上的 /home/remoteuser/project_folder 目录下载到 Windows 的当前目录。
# 格式: scp -r [远程用户]@[远程主机IP]:[远程目录路径] [本地路径] scp -r remoteuser@192.168.1.100:/home/remoteuser/project_folder .
示例 4:上传整个目录
将 Windows 上的 project_folder 目录上传到远程服务器的 /home/remoteuser/ 目录下。
# 格式: scp -r [本地目录路径] [远程用户]@[远程主机IP]:[远程目标路径] scp -r project_folder remoteuser@192.168.1.100:/home/remoteuser/
示例 5:使用非标准端口号
如果你的 SSH 服务器运行在 2222 端口,而不是默认的 22 端口。
# 格式: scp -P [端口号] ... scp -P 2222 remoteuser@192.168.1.100:/home/remoteuser/report.txt .
重要:
scp的端口号选项是-P(大写),而不是-p。
示例 6:使用 SSH 密钥进行免密登录
如果你已经配置了 SSH 密钥对,可以避免每次都输入密码。
# 格式: scp -i [私钥文件路径] ... scp -i C:/Users/YourUser/.ssh/id_rsa remoteuser@192.168.1.100:/home/remoteuser/report.txt .
注意:路径中的反斜杠
\在 PowerShell 中可能会被转义,所以使用正斜杠 通常更安全。
使用第三方工具 (PuTTY)
如果你的 Windows 版本较旧,或者你已经是 PuTTY 用户,可以使用 PuTTY 提供的 pscp.exe 工具。
下载并安装 PuTTY
- 访问 PuTTY 官方下载页面。
- 下载
putty.zip压缩包。 - 解压,将
pscp.exe文件放到一个系统环境变量PATH包含的目录中(C:\Windows\System32),或者记住它的存放路径。
使用 pscp 命令
打开 命令提示符 或 PowerShell,使用 pscp 命令,它的语法与原生 scp 略有不同。
基本语法:
pscp [选项] [源文件] [目标地址]
常用选项:
-P:指定端口号(同样是大写 P)。-r:递归复制目录。-pw:在命令行中指定密码(不安全,不推荐,仅在自动化脚本等安全可控的环境下使用)。-i:指定私钥文件(PuTTY 格式的.ppk文件)。
pscp 实用示例
(环境同上)
# 下载文件 # 格式: pscp [远程用户]@[远程主机IP]:[远程文件路径] [本地路径] pscp remoteuser@192.168.1.100:/home/remoteuser/report.txt . # 上传文件 # 格式: pscp [本地文件路径] [远程用户]@[远程主机IP]:[远程目标路径] pscp report.txt remoteuser@192.168.1.100:/home/remoteuser/ # 下载目录 # 格式: pscp -r [远程用户]@[远程主机IP]:[远程目录路径] [本地路径] pscp -r remoteuser@192.168.1.100:/home/remoteuser/project_folder . # 上传目录 # 格式: pscp -r [本地目录路径] [远程用户]@[远程主机IP]:[远程目标路径] pscp -r project_folder remoteuser@192.168.1.100:/home/remoteuser/ # 使用非标准端口 # 格式: pscp -P [端口号] ... pscp -P 2222 remoteuser@192.168.1.100:/home/remoteuser/report.txt .
总结与对比
| 特性 | Windows 内置 OpenSSH (scp) |
PuTTY (pscp) |
|---|---|---|
| 易用性 | ⭐⭐⭐⭐⭐ (无需安装,开箱即用) | ⭐⭐⭐ (需要下载和配置 PATH) |
| 兼容性 | ⭐⭐⭐ (仅限 Win 10/11) | ⭐⭐⭐⭐⭐ (所有 Windows 版本) |
| 命令语法 | 与 Linux/macOS 完全一致 | 基本相同,但有一些细微差别 |
| 推荐度 | 强烈推荐 (如果系统支持) | 备选方案 |
最终建议:
- 如果你使用的是 Windows 10 或 Windows 11,请毫不犹豫地使用方式一(内置 OpenSSH)。 这是官方、现代且最方便的解决方案。
- 如果你使用的是 Windows 7 或更早版本,或者已经是 PuTTY 生态用户,请使用方式二(PuTTY 的
pscp)。
