linux scp 命令全称 Secure Copy,是基于 SSH 协议的安全远程文件复制工具,依靠 SSH 加密通道完成本地和远程服务器之间的文件、目录传输,传输过程数据加密,相比传统 ftp 安全性更高,运维日常上传下载配置文件、备份包、日志文件最常用,scp 底层复用 SSH 认证机制,可以使用密码登录,也支持 SSH 密钥免密登录,支持本地推送到远程,也支持远程拉取到本地,还支持跨两台远程服务器互传,学习的时候先掌握基础语法、常用参数、推拉两种模式,理解端口、递归目录、权限保留等核心选项,同时区分 scp 和 rsync 差异,排查端口不通、权限报错、主机指纹告警等常见故障,就可以熟练使用 linux scp 命令完成跨主机文件传输。
一 基础原理
scp 依赖 ssh 服务,目标主机必须开启 sshd 服务,默认 SSH 端口是 22,认证方式和 ssh 登录一致,传输全程加密,适合中小型文件快速传输,大文件断点续传能力弱,大体积批量文件推荐 rsync。
二 基础语法
scp [选项] 源路径 目标路径
两种核心模式
1 本地 → 远程(推送)
scp 本地文件 用户 @远程 IP: 远程目录
2 远程 → 本地(拉取)
scp 用户 @远程 IP: 远程文件 本地目录
基础示例
scp test.tar.gz root@192.168.1.100:/data/
scp root@192.168.1.100:/var/log/messages ./
三 核心参数对照表
| 参数 | 作用说明 |
|---|---|
| r | 递归复制整个目录,传输文件夹必加,高频参数 |
| P | 指定 SSH 端口,注意是大写 P,默认 22 不用写 |
| p | 保留原文件修改时间、访问时间、权限属性 |
| C | 传输开启压缩,网络带宽差的时候加速传输 |
| i | 指定私钥文件,密钥免密登录场景使用 |
| l | 限制传输带宽,单位 Kbit/s,防止占满业务带宽 |
| v | verbose 详细调试输出,排错的时候使用 |
| o | 传递 ssh 额外选项,比如 StrictHostKeyChecking=no 跳过主机指纹确认 |
重点区分:大写 P 是端口,小写 p 是保留属性,新手非常容易写反
四 常用实操示例
1 递归上传整个目录
scp -r /opt/app root@192.168.1.100:/opt/
2 远程端口不是 22,指定端口传输
scp -P 2222 test.zip root@192.168.1.100:/tmp/
3 使用私钥免密传输
scp -i ~/.ssh/id_rsa file.tar root@192.168.1.100:/backup/
4 开启压缩传输
scp -C bigfile.iso root@192.168.1.100:/data/
5 跨两台远程服务器互传
scp root@192.168.1.100:/data/a.tar root@192.168.1.101:/data/
6 跳过主机指纹确认,脚本自动化使用
scp -o StrictHostKeyChecking=no file root@192.168.1.100:/tmp/
五 scp 和 rsync 核心区别
| 对比项 | scp | rsync |
|---|---|---|
| 协议 | SSH 加密 | SSH 或者 rsync daemon |
| 断点续传 | 不支持中断续传 | 支持断点续传 |
| 增量同步 | 全量传输 | 只同步差异部分,增量 |
| 适用场景 | 小文件快速拷贝 | 大文件、大批量目录同步 |
| 重复传输 | 每次全部重传 | 重复传输只传变化内容 |
六 常见报错与排查
1 Permission denied 权限拒绝
远程目标目录没有写权限,或者账号密码 / 密钥认证失败
2 Connection refused 连接拒绝
远程 sshd 没有启动,或者 SSH 端口修改,防火墙 / 安全组拦截端口
3 Host key verification failed 主机指纹校验失败
主机密钥变更,自动化脚本可以使用 StrictHostKeyChecking=no 跳过,生产环境谨慎关闭指纹校验
4 No such file or directory
源文件路径写错,或者远程目录不存在,远程目录需要提前创建
5 传输目录忘记加 r 参数
报错 not a regular file,传输文件夹必须加 - r 递归参数
七 注意事项
1 传输大文件中途断线,scp 不会断点续传,需要重新完整传输
2 密钥免密配置成功之后,scp 不需要重复输入密码,适合自动化脚本
3 云服务器除了系统防火墙,还要确认云安全组放行 SSH 端口
4 递归传输的时候,注意源目录末尾斜杠,带斜杠是复制目录内内容,不带斜杠是连同目录本身一起复制
【常见问题】
问题 1 linux scp 命令大写 P 和小写 p 分别是什么
回答 1 linux scp 大写 P 是指定远程 SSH 端口,linux scp 小写 p 是保留文件原始权限和时间属性,linux scp 这两个参数非常容易混淆。
问题 2 linux scp 传输文件夹为什么报错
回答 2 linux scp 传输目录必须添加 r 递归参数,linux scp 默认只拷贝普通单文件,不加 r 会提示 not a regular file。
问题 3 linux scp 支持断点续传吗
回答 3 linux scp 本身不支持断点续传,linux scp 传输中断之后需要重新完整传输,大文件增量同步推荐改用 rsync 替代 linux scp。
问题 4 linux scp 跨服务器互传是什么写法
回答 4 linux scp 支持两台远程主机之间直接拷贝,格式 scp 用户 @源 IP: 源文件 用户 @目标 IP: 目标目录,linux scp 跨机传输同样支持 r 递归参数。
问题 5 linux scp 提示 Connection refused 怎么排查
回答 5 linux scp 连接拒绝优先检查远程 sshd 服务是否启动,核对 SSH 端口号,同时排查 linux scp 经过的防火墙和云安全组是否放行对应端口。
【免责申明】
本文为 linux scp 命令技术教程,传输涉及跨主机访问,请遵守网络安全规范,不同发行版 scp 参数基本一致,大文件批量同步建议评估 rsync 方案,内容仅用于技术学习参考。


