scp是linux下安全复制文件到远程服务器的常用工具:一、基础命令复制单个文件;二、加-r参数递归复制整个目录;三、用-p指定非标准ssh端口;四、用-l限制带宽;五、通过ssh-keygen与ssh-copy-id配置密钥认证实现免密传输。

如果您需要在Linux系统中将本地文件复制到远程服务器,scp命令是最常用且安全的工具。以下是实现此操作的具体方法:
一、使用基础scp命令复制单个文件
scp基于SSH协议,通过加密连接传输文件,确保数据在传输过程中不被窃取或篡改。该方法适用于一次性复制单个文件。
1、打开终端,输入以下格式的命令:scp /本地/路径/文件名 用户名@远程IP地址:/远程/目标/路径/
2、按回车后,系统会提示输入远程用户的密码。
3、密码正确且网络连通时,文件开始传输,完成后终端无额外提示即表示成功。
二、使用scp递归复制整个目录
当需要传输包含子目录和多个文件的完整目录结构时,必须启用递归选项,否则仅复制目录本身而不包含内容。
1、执行带-r参数的命令:scp -r /本地/路径/目录名 用户名@远程IP地址:/远程/目标/路径/
2、确认远程主机SSH服务已运行且防火墙允许22端口通信。
3、输入远程用户密码完成身份验证,传输过程显示每个子项的进度。
三、指定非标准SSH端口进行传输
若远程服务器的SSH服务未监听默认22端口,直接使用基础scp命令将连接失败,需显式指定端口号以建立有效连接。
1、使用-P(大写P)参数附加端口号:scp -P 2222 /本地/文件 用户名@远程IP地址:/远程/路径/
2、确保-P选项紧邻scp命令,且端口号为数字,不可与小写-p混淆。
3、输入对应端口上配置的用户密码完成传输。
四、限制传输带宽防止占用过多网络资源
在共享网络环境或低带宽链路中,不限速的scp可能影响其他业务,可通过内置限速机制控制最大传输速率。
1、使用-l参数设定限速值(单位为Kbit/s):scp -l 800 /本地/文件 用户名@远程IP地址:/远程/路径/
2、数值800表示上限为约100KB/s(800 ÷ 8),可根据实际网络状况调整。
3、传输过程中速率将被动态约束,终端输出仍保持正常进度反馈。
五、使用密钥认证免输密码实现自动化传输
手动输入密码无法满足脚本化或定时任务需求,通过预置SSH密钥对可跳过交互式认证环节。
1、在本地生成密钥对(若尚未存在):ssh-keygen -t rsa
2、将公钥上传至远程服务器授权列表:ssh-copy-id 用户名@远程IP地址
3、后续执行scp命令时不再提示输入密码,传输直接启动。










