scp基础语法
scp [选项] 源文件路径 目标文件路径
- 常用选项:
-P
:指定远程SSH端口(默认为22)-r
:递归复制整个目录-C
:启用压缩传输-i
:指定私钥文件(用于密钥认证)
核心操作场景
本地文件 → 远程服务器
scp /本地/文件.txt 用户名@远程IP:/远程/目录/
示例:
将本地的report.pdf
复制到远程服务器168.1.100
的/home/user/docs/
目录:
scp ~/documents/report.pdf user@192.168.1.100:/home/user/docs/
远程服务器 → 本地
scp 用户名@远程IP:/远程/文件路径 /本地/目录/
示例:
下载远程服务器0.113.5
上的/var/log/app.log
到本地当前目录:
scp admin@203.0.113.5:/var/log/app.log ./
远程服务器之间传输
scp 用户1@源IP:/文件路径 用户2@目标IP:/目标路径/
示例:
将serverA
的/data/backup.zip
复制到serverB
的/backups/
:
scp john@192.168.1.10:/data/backup.zip mary@192.168.1.20:/backups/
递归复制目录(含子文件)
scp -r /本地/目录/ 用户名@远程IP:/目标路径/
示例:
上传整个project/
目录到远程:
scp -r ~/project/ dev@example.com:/opt/development/
高级配置技巧
-
指定非默认SSH端口
若远程SSH端口为2222
:scp -P 2222 file.txt user@host:/path/
-
使用密钥认证免密码
通过-i
指定私钥:scp -i ~/.ssh/id_rsa_private file.txt user@host:/path/
-
启用传输压缩(大文件推荐)
scp -C largefile.iso user@host:/backups/
注意事项
-
权限问题
- 确保目标路径有写入权限(远程用户需具备
/目标路径/
的写权限)。 - 本地文件需有读权限。
- 确保目标路径有写入权限(远程用户需具备
-
安全性
- 所有传输均通过SSH加密,避免使用明文传输工具(如FTP)。
- 推荐使用密钥登录而非密码(通过
ssh-keygen
生成密钥对)。
-
路径格式
- 远程路径格式:
用户名@主机:路径
- 特殊字符(如空格)需用引号包裹:
"file name.txt"
- 远程路径格式:
常见问题解决
-
连接超时:
检查防火墙是否放行SSH端口,或确认远程IP是否正确:ssh user@host # 先测试SSH连通性
-
Permission denied:
- 确认远程目录权限:
chmod 755 /目标路径
- 检查密钥权限:
chmod 600 ~/.ssh/id_rsa
- 确认远程目录权限:
-
命令无响应:
使用-v
参数查看详细日志:scp -v file.txt user@host:/path/
scp
是Linux系统管理员和开发者的核心工具之一,兼顾安全性与效率,通过掌握基础命令与场景化操作,可轻松实现跨服务器文件管理,对于更复杂的传输任务(如增量同步),可进阶学习rsync
命令,但scp
在简单场景中仍是首选方案。
引用说明基于Linux man-pages的scp文档(v8.4)及OpenSSH官方实践指南,确保信息的准确性与安全性,操作示例已在Ubuntu 22.04/CentOS 7环境中验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9973.html