Remote Copy

Other

通过SSH/SCP从远程Windows、macOS或Linux电脑复制文件到本地Mac,支持路径转换、中文编码和自动故障诊断。

Install

openclaw skills install remote-copy

Remote Copy - 远程文件复制 Skill

概述

通过 SSH/SCP 从远程电脑(Windows/Mac/Linux)复制文件到本地 Mac。 支持任意两台电脑之间的文件传输,自动处理路径格式、SSH 诊断、中文编码。

触发词

  • "从XX电脑复制资料"
  • "远程拷贝"
  • "scp 传输"
  • "从XX IP 拉文件"
  • "remote copy"
  • "复制远程文件"
  • "从服务器下载文件"

使用方式

基础用法

从 192.168.6.81 复制 F:\公司资料\一冶大模型\资料

完整参数

从 vip@192.168.6.81 复制 F:\公司资料 到 ~/公司资料/

Linux 示例

从 root@192.168.1.100 复制 /home/user/dataset 到 ~/data/

Mac 示例

从 192.168.1.50 复制 /Users/john/Documents/project 到 ~/project/

执行流程

Step 1: 解析参数

从用户输入中提取:

参数必需默认值说明
remote_ip-远程 IP 地址
remote_path-远程路径(支持 Windows/Mac/Linux 格式)
remote_user询问或 vip远程用户名
local_dest~/远程资料/{ip}/本地目标路径

Step 2: 路径格式自动转换

根据路径格式自动判断远程系统类型:

路径格式系统SCP 路径转换
F:\公司资料C:/xxxWindows/f/公司资料
/Users/xxxmacOS直接使用
/home/xxx/root/xxxLinux直接使用

Windows 路径转换规则:

  • F:\xxx/f/xxx
  • D:\/d/
  • 反斜杠 \ → 正斜杠 /
  • 驱动器号小写并加 / 前缀

Step 3: SSH 连接测试

ssh -o ConnectTimeout=5 -o BatchMode=yes {user}@{ip} "echo ok" 2>&1

Step 4a: 连接成功 → 执行复制

方案 A: scp(简单场景)

mkdir -p {local_dest}
scp -r -o StrictHostKeyChecking=no {user}@{ip}:"{converted_path}" {local_dest}

方案 B: tar 管道(推荐,解决中文路径问题)

mkdir -p {local_dest}
ssh -o StrictHostKeyChecking=no {user}@{ip} 'chcp 65001 >nul && cd /d "{remote_path}" && tar cf - .' | tar xf - -C {local_dest}

Windows 中文路径必须用 tar 管道方式,scp 会因 GBK 编码乱码失败

Step 4b: 连接失败 → 诊断 + 修复方案

自动检测失败原因并给出对应系统的修复命令:


SSH 开启指南(按系统)

Windows(需手动开启 OpenSSH)

检查是否已安装:

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

安装 OpenSSH 服务器:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

启动服务:

Start-Service sshd
Set-Service -Name sshd -StartupType Automatic

放通防火墙:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

验证:

Get-Service sshd          # 应显示 Running
netstat -an | findstr :22  # 应显示 LISTENING

macOS(默认已开启)

开启远程登录:

# 图形界面:系统设置 → 通用 → 共享 → 远程登录 → 打开

# 命令行:
sudo systemsetup -setremotelogin on

验证:

ssh localhost  # 应能连接

Linux

Ubuntu/Debian:

sudo apt update && sudo apt install openssh-server -y
sudo systemctl start sshd
sudo systemctl enable sshd

CentOS/RHEL/Rocky:

sudo yum install openssh-server -y
sudo systemctl start sshd
sudo systemctl enable sshd

放通防火墙:

# Ubuntu (ufw)
sudo ufw allow 22/tcp

# CentOS (firewalld)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

验证:

sudo systemctl status sshd  # 应显示 active (running)

前置条件清单

条件WindowsmacOSLinux
SSH 服务❌ 需手动安装✅ 默认有❌ 需安装
防火墙放通 22❌ 需手动✅ 自动❌ 需手动
用户名登录账号登录账号登录账号
密码/密钥需要需要需要

高级功能

密码认证(首次连接)

当密钥认证失败时,使用 sshpass:

sshpass -p "{password}" scp -r -o StrictHostKeyChecking=no {user}@{ip}:"{path}" {local_dest}

密码仅在当前会话使用,不会被保存

免密配置(推荐)

首次连接后配置密钥免密:

# 生成密钥(如果没有)
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ""

# 复制公钥到远程
ssh-copy-id -i ~/.ssh/id_ed25519.pub {user}@{ip}

大文件传输(>1GB)

自动切换 rsync(支持断点续传):

rsync -avz --progress -e "ssh -o StrictHostKeyChecking=no" {user}@{ip}:"{path}" {local_dest}

批量传输

支持多路径:

从 192.168.6.81 复制 F:\资料1 和 F:\资料2

传输完成

  • 显示复制的文件数量和总大小
  • 显示本地存储路径
  • 可选:在 Finder 中打开目录

常见问题

问题原因解决方案
Connection closedSSH 服务未开启按上方指南开启
Permission denied密码错误或用户不存在检查 whoami 和密码
中文乱码Windows GBK 编码使用 tar 管道 + chcp 65001
No such file路径格式错误检查 Windows 路径转换
Host key verification failed首次连接未信任加 -o StrictHostKeyChecking=no
Connection timed out防火墙阻断放通 22 端口

实战案例

从 Windows 复制

用户: 从 192.168.6.81 复制 F:\公司资料\一冶大模型\资料
助手:
1. 检测到 Windows 路径,转换为 /f/公司资料/一冶大模型/资料
2. 测试 SSH 连接...
3. 连接成功,使用 tar 管道传输(解决中文路径问题)
4. 完成!共复制 109 个文件,保存在 ~/远程资料/192.168.6.81/

从 Linux 复制

用户: 从 root@192.168.1.100 复制 /home/user/dataset
助手:
1. 检测到 Linux 路径
2. 测试 SSH 连接...
3. 连接成功,使用 scp 传输
4. 完成!共复制 256 个文件,保存在 ~/远程资料/192.168.1.100/

从 Mac 复制

用户: 从 192.168.1.50 复制 /Users/john/Projects/app
助手:
1. 检测到 macOS 路径
2. 测试 SSH 连接...
3. 连接成功,使用 scp 传输
4. 完成!保存在 ~/远程资料/192.168.1.50/

版本信息

  • 版本:1.0.0
  • 作者:龙虾 (Lobster)
  • 更新日期:2026-06-17
  • 平台:macOS (OpenClaw)
  • 依赖:sshpass (brew install sshpass)