温馨提示×

Linux Notepad:如何用SCP进行安全文件传输

小樊
38
2025-11-15 07:47:28
栏目: 智能运维

SCP 安全文件传输速查

适用场景与前置条件

  • SCP(Secure Copy)基于SSH加密通道在两台主机间复制文件/目录,适合在 Linux 终端中快速、安全地传输数据。使用前请确保目标主机开启 SSH 服务,并准备好可用的账号与认证方式(密码或SSH 密钥)。若需自动化执行,建议配置基于密钥的免密登录。

常用命令与示例

  • 本地 → 远程
    • 复制文件:scp /path/local/file.txt user@remote_ip:/remote/path/
    • 复制并重命名:scp /path/local/file.txt user@remote_ip:/remote/path/file_new.txt
    • 复制目录:scp -r /path/local/dir user@remote_ip:/remote/path/
  • 远程 → 本地
    • 复制文件:scp user@remote_ip:/remote/path/file.txt /path/local/
    • 复制目录:scp -r user@remote_ip:/remote/path/dir /path/local/
  • 指定端口(SSH 端口非默认 22 时)
    • 示例:scp -P 2344 file.txt user@remote_ip:/remote/path/
  • 指定私钥(如使用密钥登录)
    • 示例:scp -i ~/.ssh/id_rsa file.txt user@remote_ip:/remote/path/
  • 跨主机直传(部分环境不支持)
    • 示例:scp user1@host1:/file user2@host2:/file2
  • 说明:SCP 的语法为 scp [可选参数] <源路径> <目标路径>,源或目标之一需包含 [user@]host: 前缀以指明远程主机。

实用参数速查

  • -r:递归复制目录
  • -P <port>:指定远程 SSH 端口(注意是大写 P)
  • -i <identity_file>:使用指定私钥进行认证
  • -C:启用压缩以加快传输
  • -p:保留修改时间、访问时间、权限
  • -v:输出详细调试信息,便于排错
  • -q静默模式,不显示进度与警告
  • -l <limit>:限制带宽,单位为 Kbit/s
  • -4 / -6:强制使用 IPv4 / IPv6
  • -c <cipher>:指定加密算法

免密登录与自动化

  • 生成密钥对:ssh-keygen -t rsa(全程回车使用默认路径与空口令)
  • 分发公钥到目标主机:ssh-copy-id user@remote_ip
  • 之后使用 SCP 将自动走密钥认证,无需交互输入密码,适合放入脚本或定时任务。

常见问题与排查

  • 端口与协议
    • 指定端口用 -P;若服务器仅支持 SFTP/SCP 子系统,跨主机直传(host1 → host2)可能不被支持,可改为先下载到本地再上传。
  • 权限与路径
    • 目标路径需存在且当前用户对目标目录具备写权限;远程路径建议使用绝对路径(如 /opt/~/)。
  • 认证与密钥
    • 使用 -i 指定私钥;若私钥受口令保护,SCP 会交互询问口令,脚本中可结合 ssh-agent 管理密钥。
  • 调试与网络
    • 连接失败或速度异常时,用 -v 查看详细过程;链路较差时可加 -C 启用压缩,或用 -l 限制带宽避免拥塞。

0