scp (Secure Copy Protocol)指令集
scp
(Secure Copy Protocol) 命令选项及说明(基于 OpenSSH 9.0+ 版本):
📁 基础传输选项
选项 | 描述 | 示例 |
---|---|---|
-r | 递归复制整个目录 | scp -r dir/ user@host:/target |
-P <port> | 指定 SSH 端口 | scp -P 2222 file host: |
-p | 保留文件元数据(修改时间/权限) | scp -p config.ini host:/etc |
-q | 静默模式(不显示进度/警告) | scp -q secret.txt host: |
-v | 详细输出(调试用) | scp -v -r logs/ host:/backup |
⚡️ 性能优化
选项 | 描述 | 示例 |
---|---|---|
-C | 启用压缩传输 | scp -C large.iso host:/data |
-l <kbps> | 带宽限制(Kbit/s) | scp -l 500 db.dump host: |
-c <cipher> | 指定加密算法 | scp -c aes256-gcm file host: |
🔐 安全认证
选项 | 描述 | 示例 |
---|---|---|
-i <key> | 指定 SSH 私钥 | scp -i ~/.ssh/custom_key file host: |
-o <option> | 自定义 SSH 配置 | scp -o "StrictHostKeyChecking=no" file host: |
-B | 批处理模式(禁用交互) | scp -B file host: |
🌐 网络协议控制
选项 | 描述 | 示例 |
---|---|---|
-4 | 强制使用 IPv4 | scp -4 file ipv4-host: |
-6 | 强制使用 IPv6 | scp -6 file ipv6-host: |
-J <jump-host> | 通过跳板机连接 | scp -J user@jump file target-host: |
🔧 高级选项
选项 | 描述 | 示例 |
---|---|---|
-F <config> | 指定 SSH 配置文件 | scp -F ~/.ssh/alt_config file host: |
-S <ssh-path> | 指定 SSH 程序路径 | scp -S /usr/local/bin/ssh file host: |
-3 | 通过本地主机中转传输 | scp -3 user@host1:/file user@host2:/ |
-s | 使用 SFTP 子系统代替 SCP | scp -s file host:/path |
特殊场景选项
选项 | 描述 | 示例 |
---|---|---|
-O | 使用原始 SCP 协议(兼容旧系统) | scp -O file legacy-host:/ |
-t | 内部使用(目标模式) | 系统自动调用 |
-f | 内部使用(源模式) | 系统自动调用 |
-d | 目标为目录(内部用) | 系统自动调用 |
🚫 已废弃选项
选项 | 说明 |
---|---|
-1 | 强制 SCP 协议 v1(不安全) |
-2 | 强制 SCP 协议 v2(已默认) |
💡 实用组合示例
-
跨跳板机传输大文件
scp -C -J user@jump-server -P 2222 \-i ~/.ssh/prod_key large_db.sql \prod-user@db-host:/backups/
-
限速保留权限复制
scp -p -l 1000 -c aes256-ctr \-o "ServerAliveInterval=30" \/var/log/*.log admin@backup-host:/logs/
-
静默模式批量传输
scp -B -q -r -O \/data/reports/* \audit@192.168.1.100:/archive/2023/
⚠️ 重要注意事项
-
目录路径规则:
# 正确(目录结尾带/) scp -r src/ host:/target_dir/ # 错误(会被识别为文件名) scp -r src/ host:target_dir
-
特殊字符处理:
# 转义空格和特殊字符 scp "file\ with\ spaces.txt" host:"path\ with\ spaces/"
-
协议安全性:
- 优先使用
sftp
或rsync
替代(SCP 协议存在设计缺陷) - 禁用协议 v1:
scp -o "Protocol=2"
- 优先使用
查看完整文档:
man scp
或scp -T
(测试模式)