Linux 【05- scp命令超详细教程】

📅 2026/7/2 10:55:19
Linux 【05- scp命令超详细教程】
Linux scp 命令超详细完整教程一、scp 基础介绍1. 作用scp secure copy基于 SSH 加密传输文件跨服务器复制文件/文件夹传输全程加密比 rcp、ftp 安全。2. 前置条件两台机器都安装 openssh-client / openssh-server目标机器 SSH 端口开放默认22、防火墙放行拥有对方服务器账号密码/免密密钥3. 通用语法# 本地 → 远程scp[参数]本地文件/目录 用户名远程IP:远程路径# 远程 → 本地scp[参数]用户名远程IP:远程文件/目录 本地路径# 远程A → 远程B中转传输scp[参数]用户AIPA:文件 用户BIPB:路径二、常用核心参数大全参数作用说明-r递归复制文件夹复制目录必须加-P 端口指定SSH端口大写P默认22可省略-p保留文件原有权限、修改时间-C传输时开启压缩大文件提速-v打印详细调试日志排错用-l 数值限制传输带宽单位Kbit/s-o ssh选项传递ssh参数如免密忽略主机校验-i 私钥文件使用指定私钥登录密钥认证三、实战示例最常用场景场景1本地单个文件上传到远程# 把本地 /root/test.txt 传到 192.168.1.100 的 /home/ubuntu/scp/root/test.txt ubuntu192.168.1.100:/home/ubuntu/# 上传并重命名scptest.txt ubuntu192.168.1.100:/home/ubuntu/new_test.txt场景2本地文件夹上传必须 -r# 本地 data 文件夹完整上传远程scp-r/root/data ubuntu192.168.1.100:/home/ubuntu/场景3远程文件下载到本地# 拉取远程文件到当前本地目录scpubuntu192.168.1.100:/home/ubuntu/log.txt ./# 拉取远程文件夹到本地 /tmpscp-rubuntu192.168.1.100:/home/ubuntu/logs /tmp场景4SSH非22端口传输大写 -P服务器SSH改成 2222 端口上传文件# 上传scp-P2222test.txt ubuntu192.168.1.100:/home/ubuntu/# 下载scp-P2222ubuntu192.168.1.100:/home/ubuntu/log.txt ./# 传文件夹scp-r-P2222/root/file ubuntu192.168.1.100:/data注意小写-p是保留权限大写-P才是端口极易踩坑场景5使用私钥文件登录免密密钥scp-i/root/.ssh/id_rsa test.txt ubuntu192.168.1.100:/home/ubuntu/场景6传输保留文件属性权限、时间scp-rp/root/package ubuntu192.168.1.100:/opt/场景7大文件压缩传输提速-Cscp-Cr本地大目录 root10.0.0.5:/data/backup场景8限制传输带宽限速限制带宽 1000Kbit/sscp-l1000big.iso root192.168.1.100:/mnt场景9远程A直接传到远程B本机中转本机只是中转文件从服务器A直接流向Bscproot10.0.0.1:/data/file.tar root10.0.0.2:/backup场景10调试排错打印详细日志-v连接超时、认证失败时用看完整SSH握手过程scp-vtest.txt ubuntu192.168.1.100:/tmp四、高级进阶用法1. 一次性传输多个本地文件scpfile1.txt file2.tar ubuntu192.168.1.100:/home/ubuntu/2. 忽略主机密钥校验自动化脚本专用通过-o传递ssh参数避免首次连接提示yes/noscp-oStrictHostKeyCheckingno-oUserKnownHostsFile/dev/null test.txt ubuntu192.168.1.100:/tmp3. 后台静默传输大文件不占终端配合nohup后台跑关闭窗口不中断nohupscp-rbig_folder root192.168.1.100:/mnt# 查看日志tail-fnohup.out五、免密传输推荐不用输密码步骤1生成本机密钥ssh-keygen-trsa# 一路回车不设置密钥密码步骤2推送公钥到远程服务器ssh-copy-id-p2222ubuntu192.168.1.100步骤3之后scp无需输入密码scptest.txt ubuntu192.168.1.100:/home/ubuntu六、常见报错与解决方案1.scp: Not a directory原因目标路径不存在 / 目标写成文件路径解决先登录远程mkdir创建文件夹2.Permission denied远程目录无写入权限换/tmp测试或 chmod 放开权限账号密码错误 / 私钥不匹配核对账号、私钥文件3.Connection refusedSSH端口错误确认端口加-P远程sshd未启动 / 防火墙拦截# 远程查看ssh状态systemctl status sshd4.lost connection传输中断网络波动加-C压缩、分段传输服务器超时配置修改/etc/ssh/sshd_config延长超时5. 复制文件夹漏掉-r报错regular file目录传输必须带-r七、scp 优缺点 替代工具scp 缺点不支持断点续传断网从头传海量小文件传输效率低替代推荐生产常用rsync支持断点续传、增量同步、差量传输优先推荐rsync-avz-P本地目录 userip:/远程路径sftp交互式批量管理文件rclone云服务器/对象存储高速传输八、最简速查模板# 上传文件夹、自定义端口、保留权限、压缩scp-Crp-P2222/本地目录 userIP:/远程目录# 下载文件夹、私钥登录scp-Cr-i/root/.ssh/id_rsa userIP:/远程目录 /本地保存路径