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

=======================================================================================

posted on 2026-09-23 15:10  jack_Meng  阅读(9)  评论(0)    收藏  举报

导航