SCP(Secure Copy Protocol)是 Linux/Unix 系统中基于 SSH 协议的安全文件传输命令,用于在本地与远程服务器之间或两台远程服务器之间加密传输文件,其核心语法依赖 SSH 认证机制,确保数据传输的机密性和完整性,以下是详细使用指南:
scp [选项] 源文件 目标路径
- 源文件/目标路径格式:
- 本地路径:
/home/user/file.txt
- 远程路径:
用户名@远程IP:路径
(如user@192.168.1.10:/remote/dir/
)
- 本地路径:
常用选项详解
选项 | 作用 |
---|---|
-P <端口> |
指定 SSH 端口(默认 22) |
-r |
递归复制整个目录 |
-C |
启用压缩(加快大文件传输) |
-v |
显示详细传输过程(调试用) |
-i <密钥文件> |
指定 SSH 私钥文件(如 -i ~/.ssh/id_rsa ) |
-l <带宽> |
限制带宽(单位 Kbit/s,如 -l 1000 ) |
6 个经典使用示例
-
本地 → 远程
scp /local/file.txt user@remote-ip:/remote/directory/
-
远程 → 本地
scp user@remote-ip:/remote/file.txt /local/directory/
-
远程 → 远程(通过本地中转)
scp user1@source-ip:/file.txt user2@target-ip:/destination/
-
递归复制目录
scp -r /local/folder/ user@remote-ip:/remote/path/
-
指定非标准 SSH 端口
scp -P 2222 /local/file user@remote-ip:/path/
-
使用密钥认证免密传输
scp -i ~/.ssh/private_key.pem /local/file user@remote-ip:/path/
注意事项与常见问题
-
权限问题
- 目标路径需有写入权限(否则报
Permission denied
) - 密钥文件权限需设为
600
:chmod 600 ~/.ssh/key.pem
- 目标路径需有写入权限(否则报
-
路径特殊字符处理
- 空格或特殊符号用引号包裹:
scp "file name.txt" user@ip:"/path/with space/"
- 空格或特殊符号用引号包裹:
-
大文件传输优化
- 组合
-C
(压缩)和-l
(限速)避免网络阻塞:scp -C -l 800 large-file.iso user@ip:/destination/
- 组合
-
连接超时处理
- 修改 SSH 配置(
/etc/ssh/sshd_config
)调整ClientAliveInterval
- 修改 SSH 配置(
安全实践建议
- 强制密钥登录:禁用 SSH 密码认证(修改
/etc/ssh/sshd_config
中PasswordAuthentication no
) - 使用 SCP 替代 FTP:FTP 协议明文传输,SCP 通过 SSH 加密更安全
- 审计传输记录:通过
-v
输出或检查/var/log/auth.log
监控操作
替代方案推荐
- rsync:增量同步文件,适合定期备份(支持 SCP 协议)
- sftp:交互式文件管理(与 SCP 同属 SSH 工具集)
:SCP 是轻量级加密传输的首选工具,掌握其语法可高效管理服务器文件,首次使用建议用
-v
观察过程,避免操作失误,生产环境中务必配置密钥认证提升安全性。
引用说明基于 Linux man scp
官方文档、OpenSSH 安全最佳实践,以及服务器运维领域的通用技术标准。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6229.html