SCP是基于SSH加密的安全文件传输工具,支持本地与远程双向复制、端口/密钥指定、目录递归、带宽限制及跳过主机验证等操作。

如果您需要在Linux系统之间安全地传输文件,SCP(Secure Copy Protocol)提供了一种基于SSH加密的可靠方式。以下是使用SCP进行跨服务器数据拷贝及限速设置的具体操作步骤:
一、基础SCP文件传输命令
SCP利用SSH协议建立加密连接,确保传输过程中的数据完整性与机密性。其语法结构固定,支持本地与远程主机之间的双向复制。
1、将本地文件复制到远程服务器:
scp /path/to/local/file username@remote_host:/path/to/remote/directory/
2、从远程服务器下载文件到本地:
scp username@remote_host:/path/to/remote/file /path/to/local/directory/
3、在两台远程服务器之间直接传输(需本地作为跳转):
scp username1@host1:/path/file username2@host2:/path/
二、指定SSH端口与密钥文件
当远程服务器SSH服务运行在非默认端口(22)或使用自定义密钥对认证时,必须显式声明相关参数,否则连接将被拒绝。
1、使用-p参数指定非标准SSH端口:
scp -P 2222 /local/file user@host:/remote/
2、通过-i参数加载私钥文件进行身份验证:
scp -i /path/to/private_key.pem /local/file user@host:/remote/
3、同时指定端口与密钥:
scp -P 2222 -i ~/.ssh/id_rsa_custom file.txt user@host:/home/user/
三、递归传输整个目录
SCP默认仅处理单个文件,若需拷贝包含子目录和文件的完整目录结构,必须启用递归模式,否则会报错“not a regular file”。
1、添加-r参数实现目录级复制:
scp -r /local/directory/ user@host:/remote/parent/
2、注意末尾斜杠含义:
scp -r /local/dir/ user@host:/remote/ 表示复制dir内所有内容;scp -r /local/dir user@host:/remote/ 表示复制dir目录本身
3、配合-v参数查看详细传输过程(可选调试):
scp -rv /local/dir user@host:/remote/
四、限制传输带宽防止网络拥塞
SCP内置限速功能,通过-l参数设定最大传输速率(单位为Kbit/s),适用于共享带宽环境或避免影响其他关键业务流量。
1、将传输速率限制为500 Kbit/s:
scp -l 500 largefile.zip user@host:/remote/
2、换算参考:1000 Kbit/s ≈ 125 KB/s,因此-l 8000对应约1 MB/s
3、结合递归与限速传输目录:
scp -rl 2000 -i /key.pem /data/ user@host:/backup/
五、跳过主机密钥检查提升自动化效率
在脚本化批量传输场景中,交互式确认远程主机指纹会中断执行流程。可通过StrictHostKeyChecking选项禁用该检查,但需确保目标主机可信。
1、添加-o参数跳过主机密钥验证:
scp -o StrictHostKeyChecking=no /file user@host:/dest/
2、同时关闭已知主机检查(避免写入~/.ssh/known_hosts):
scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null /file user@host:/dest/
3、此配置仅建议用于受控内网环境,生产外网环境禁用










