SCP命令基于SSH加密传输文件,支持本地与远程互传、远程间中转、密钥认证、限速、目录递归及非标端口指定。

如果您需要在两台Linux服务器之间安全地传输文件,SCP命令提供了一种基于SSH协议的加密传输方式。以下是实现跨服务器文件传输的具体方法:
一、基础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/to/file username2@host2:/path/to/destination
二、使用密钥认证免密码传输
配置SSH密钥对可避免每次传输时手动输入密码,提升自动化效率。该方法要求私钥在发起SCP的机器上,公钥已部署至目标服务器的authorized_keys中。
1、生成RSA密钥对(如尚未生成):
ssh-keygen -t rsa -b 4096
2、将公钥复制到目标服务器:
ssh-copy-id username@remote_host
3、执行SCP命令时自动使用密钥认证:
scp -i /path/to/private_key /local/file username@remote_host:/remote/path
三、限制带宽以避免影响其他服务
在生产环境中,大文件传输可能占用大量网络资源,通过-b参数可设定最大传输速率,保障关键业务网络可用性。
1、以1MB/s速率上传文件:
scp -l 8192 /largefile.zip username@remote_host:/data/
2、注意参数单位为Kbit/s,8192对应1024KB/s即1MB/s;数值必须为整数,且不支持小数点
四、递归传输整个目录
SCP默认仅处理单个文件,若需同步目录结构及全部内容,必须启用-r选项,否则会报错“not a regular file”。
1、递归复制本地目录到远程:
scp -r /local/directory/ username@remote_host:/remote/parent/
2、注意末尾斜杠含义:源路径末尾加/表示复制目录内容,不加/则复制目录本身
3、远程路径末尾加/不影响行为,但建议统一添加以明确意图
五、指定非标准SSH端口进行传输
当目标服务器SSH服务运行在非22端口时,SCP必须显式声明端口号,否则连接将超时失败。
1、使用-P参数指定端口(大写P):
scp -P 2222 /file.txt username@remote_host:/path/
2、确认目标端口已开放且防火墙允许入站连接;切勿使用小写-p,该参数用于保留文件属性










