本文目录导读:

SCP(Secure Copy Protocol)是一种基于SSH(Secure Shell)的文件传输协议,用于在服务器之间安全地传输文件,以下是使用SCP在服务器间传输文件的方法:
基本语法
scp [选项] 源路径 目标路径
常见用法
a. 从本地复制到远程服务器
scp /本地/文件路径 用户名@远程IP:/远程/目标路径
- 示例:
scp /home/user/test.txt user@192.168.1.100:/home/user/
b. 从远程服务器复制到本地
scp 用户名@远程IP:/远程/文件路径 /本地/目标路径
- 示例:
scp user@192.168.1.100:/home/user/test.txt /home/user/
c. 在两个远程服务器之间传输文件(本地中转)
scp 用户名1@服务器1:/文件路径 用户名2@服务器2:/目标路径
- 注意:这种方式会经过本地机器中转,速度较慢,若需要直接传输,建议使用
rsync或nc。
常用选项
| 选项 | 作用 |
|---|---|
-r |
递归复制整个目录 |
-P |
指定SSH端口(默认22) |
-p |
保留文件的修改时间、访问时间和权限 |
-v |
显示详细传输过程(用于调试) |
-C |
启用压缩传输(适合大文件) |
-i |
指定SSH私钥文件 |
-q |
静默模式,不显示进度 |
- 示例:递归复制目录并指定端口
scp -r -P 2222 /home/user/backup/ user@192.168.1.100:/home/user/
实际场景示例
场景1:上传网站备份文件
scp /tmp/backup.tar.gz root@your-server.com:/var/www/backup/
场景2:下载日志文件
scp admin@10.0.0.5:/var/log/nginx/access.log ./logs/
场景3:使用密钥认证(免密码)
scp -i ~/.ssh/id_rsa_private /data/file.txt user@192.168.1.100:/data/
场景4:传输大文件并压缩
scp -C /data/largefile.iso user@remote:/data/
注意事项与排错
| 问题 | 解决方法 |
|---|---|
| 权限被拒绝 | 检查远程目录是否有写权限,或使用 sudo 传输到受保护目录 |
| 连接超时 | 检查SSH端口是否开放、防火墙规则、目标IP可达性 |
| Unknown host key | 首次连接时确认服务器指纹,或使用 -o StrictHostKeyChecking=no(注意安全风险) |
| 文件传输慢 | 尝试使用 -C 压缩选项,或改用 rsync(增量传输更快) |
高级技巧
a. 限制带宽
scp -l 1000 /data/file.tar.gz user@remote:/data/ # 限制带宽为1000 Kbps
b. 指定端口和身份文件
scp -P 2222 -i ~/.ssh/id_rsa user@remote:/data/file.txt .
c. 在脚本中使用(避免密码提示)
使用SSH密钥认证,无需处理密码。
安全提醒
- 避免使用密码认证:尽量使用SSH密钥对(
-i参数),提高安全性。 - 谨慎使用
-o StrictHostKeyChecking=no:这会跳过主机密钥验证,可能遭到中间人攻击。 - 限制SCP权限:若仅需传输文件,可配置SSH服务器的
SFTP子系统,或使用rsync+ SSH。
替代工具对比
| 工具 | 特点 | 适用场景 |
|---|---|---|
| SCP | 简单、加密传输 | 单次、少量文件传输 |
| RSYNC | 增量传输、断点续传、支持目录同步 | 大文件、频繁同步、备份 |
| SFTP | 交互式操作、支持目录浏览 | 日常管理、需交互操作 |
| NC(Netcat) | 无加密,速度快 | 内网或临时大文件传输(配合tar) |
快速总结命令
# 上传文件 scp file.txt user@remote:/path/ # 下载文件 scp user@remote:/path/file.txt . # 复制目录 scp -r dir/ user@remote:/path/ # 指定端口和密钥 scp -P 2222 -i ~/.ssh/mykey file.txt user@remote:/path/
通过以上方法,你可以高效、安全地在服务器间使用SCP传输文件。
标签: scp命令
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。