Windows 电脑如何使用 SCP 进行文件传输到 Linux
scp(Secure Copy Protocol)是基于 SSH 的文件传输工具,可以在 Windows 与 Linux 服务器之间安全地传输文件和文件夹。
常见场景:
- Windows → Linux 服务器
- Linux 服务器 → Windows
- Linux 服务器 → Linux 服务器
Windows 10/11 通常已经支持 OpenSSH,可以直接使用 scp,无需安装第三方软件。
1. 检查 SCP 是否可用#
打开 PowerShell,输入:
scp
如果能够看到类似下面的帮助信息:
usage: scp [-346ABCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file]
[-J destination] [-l limit] [-o ssh_option] [-P port]
[-S program] source ... target
说明 scp 已经可以使用。
也可以查看 scp.exe 的位置:
where.exe scp
如果输出:
C:\Windows\System32\OpenSSH\scp.exe
说明 Windows 已经安装 OpenSSH。
注意:Windows 自带的
scp对scp -V的支持可能与 Linux 不同。如果输入scp -V出现unknown option -- V,但同时显示了scp的使用说明,这并不代表 SCP 不可用。
同时可以检查 SSH:
ssh -V
2. 如果没有 SCP#
如果输入:
scp
提示:
'scp' is not recognized as the name of a cmdlet...
说明系统没有找到 OpenSSH Client。
进入:
设置 → 系统 → 可选功能 → 查看功能
搜索并安装:
OpenSSH Client
安装完成后重新打开 PowerShell,再执行:
scp
进行检查。
3. Windows 上传文件到 Linux
3.1 上传单个文件#
基本格式:
scp 本地文件 用户名@服务器IP:远程目录
例如:
scp "C:\Users\Fulilian\Desktop\test.txt" root@192.168.1.100:/root/lzz/
文件会被上传到:
/root/lzz/test.txt
3.2 上传整个文件夹#
传输文件夹需要添加 -r:
scp -r 本地文件夹 用户名@服务器IP:远程目录
例如:
scp -r "C:\Users\Fulilian\Desktop\project" root@192.168.1.100:/root/lzz/
服务器上最终得到:
/root/lzz/project/
其中:
-r
表示递归传输,会将文件夹中的文件和子目录一起传输。
4. Linux 下载文件到 Windows
SCP 的方向反过来即可。
4.1 下载单个文件#
scp 用户名@服务器IP:远程文件 本地目录
例如:
scp root@192.168.1.100:/root/lzz/test.txt "C:\Users\Fulilian\Desktop\"
4.2 下载整个文件夹#
scp -r 用户名@服务器IP:远程文件夹 本地目录
例如:
scp -r root@192.168.1.100:/root/lzz/project "C:\Users\Fulilian\Desktop\"
下载完成后:
C:\Users\Fulilian\Desktop\project\
5. 指定 SSH 端口
SSH 默认端口是:
22
如果服务器使用其他端口,例如 1235,需要使用大写 -P:
scp -P 1235 test.txt root@192.168.1.100:/root/lzz/
传输文件夹:
scp -P 1235 -r "C:\Users\Fulilian\Desktop\project" root@192.168.1.100:/root/lzz/
注意:
-P
和:
-p
含义不同。
-P 用于指定 SSH 端口,-p 是保留文件属性。
6. 使用 SSH 私钥
如果服务器使用 SSH 密钥登录,可以通过 -i 指定私钥:
scp -i C:\Users\Fulilian\.ssh\id_rsa test.txt root@192.168.1.100:/root/lzz/
如果同时使用非默认端口:
scp -P 1235 -i C:\Users\Fulilian\.ssh\id_rsa test.txt root@192.168.1.100:/root/lzz/
如果路径中包含空格,需要加双引号:
scp -i "C:\Users\Fulilian\My Keys\id_rsa" test.txt root@192.168.1.100:/root/lzz/
7. Windows 路径注意事项
Windows 路径通常使用:
C:\Users\Fulilian\Desktop\test.txt
如果路径中没有空格,可以直接使用:
scp C:\Users\Fulilian\Desktop\test.txt root@192.168.1.100:/root/lzz/
如果路径中包含空格,建议使用双引号:
scp "C:\Users\Fulilian\Desktop\My Project\test.txt" root@192.168.1.100:/root/lzz/
因此,为了避免路径问题,实际使用时可以直接养成给 Windows 路径加双引号的习惯。
8. 传输前先测试 SSH
如果 SCP 无法连接服务器,可以先测试 SSH:
ssh root@192.168.1.100
如果服务器使用其他端口:
ssh -p 1235 root@192.168.1.100
如果 SSH 能够正常连接,通常 SCP 的连接参数也没有问题。
9. 常见问题
9.1 scp is not recognized#
scp : The term 'scp' is not recognized...
检查:
where.exe scp
如果没有结果,安装 Windows 的 OpenSSH Client。
9.2 Connection refused#
Connection refused
重点检查:
- SSH 服务是否启动
- SSH 端口是否正确
- 服务器防火墙
- 云服务器安全组
- IP 地址是否正确
可以先使用 SSH 测试:
ssh -p 1235 root@192.168.1.100
9.3 Permission denied#
Permission denied
通常检查:
- 用户名是否正确
- 密码或私钥是否正确
- 远程目录是否有写权限
例如:
scp test.txt root@192.168.1.100:/root/
和:
scp test.txt user@192.168.1.100:/root/
使用不同用户时,目录权限可能不同。
9.4 No such file or directory#
No such file or directory
检查远程路径是否存在:
ls /root/lzz/
另外 Linux 路径区分大小写:
/root/LZZ/
和:
/root/lzz/
是两个不同的目录。
10. 常用命令总结
Windows → Linux#
单个文件:
scp "本地文件" 用户名@服务器IP:远程目录
整个文件夹:
scp -r "本地文件夹" 用户名@服务器IP:远程目录
Linux → Windows#
单个文件:
scp 用户名@服务器IP:远程文件 "本地目录"
整个文件夹:
scp -r 用户名@服务器IP:远程文件夹 "本地目录"
指定端口#
scp -P 1235 文件 用户名@服务器IP:远程目录
指定私钥#
scp -i C:\Users\Fulilian\.ssh\id_rsa 文件 用户名@服务器IP:远程目录
端口 + 私钥 + 文件夹#
scp -P 1235 -i C:\Users\Fulilian\.ssh\id_rsa -r "本地文件夹" root@192.168.1.100:/root/lzz/
11. 一个实际例子
假设:
本地项目:
C:\Users\Fulilian\Desktop\G1-Perceptive-Sim2Sim
服务器:
root@192.168.1.100
SSH 端口:
1235
目标目录:
/app/shared_dir/
将整个项目上传到服务器:
scp -P 1235 -r "C:\Users\Fulilian\Desktop\G1-Perceptive-Sim2Sim" root@192.168.1.100:/app/shared_dir/
上传完成后:
/app/shared_dir/G1-Perceptive-Sim2Sim/
如果只上传一个 Python 文件:
scp -P 1235 "C:\Users\Fulilian\Desktop\g1_parkour.py" root@192.168.1.100:/app/shared_dir/
12. 记住这几个参数
| 参数 | 作用 |
|---|---|
scp |
使用 SCP 传输文件 |
-r |
递归传输文件夹 |
-P |
指定 SSH 端口 |
-i |
指定 SSH 私钥 |
用户名@IP |
服务器登录地址 |
: |
分隔服务器地址和远程路径 |
最常用的就是:
scp 文件 用户名@服务器IP:远程目录
以及:
scp -r 文件夹 用户名@服务器IP:远程目录
如果服务器不是默认的 22 端口,再加:
-P 端口号
例如:
scp -P 1235 -r "C:\Users\Fulilian\Desktop\project" root@192.168.1.100:/app/shared_dir/
这几个命令基本可以覆盖日常 Windows ↔ Linux 服务器的文件传输需求。
2026-09-23 15:09:19【出处】:https://www.cnblogs.com/zhongzhengli/p/23083599
=======================================================================================
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【关注我】。(●'◡'●)
因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/23095396
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!
浙公网安备 33010602011771号