Install
openclaw skills install remote-copy通过SSH/SCP从远程Windows、macOS或Linux电脑复制文件到本地Mac,支持路径转换、中文编码和自动故障诊断。
openclaw skills install remote-copy通过 SSH/SCP 从远程电脑(Windows/Mac/Linux)复制文件到本地 Mac。 支持任意两台电脑之间的文件传输,自动处理路径格式、SSH 诊断、中文编码。
从 192.168.6.81 复制 F:\公司资料\一冶大模型\资料
从 vip@192.168.6.81 复制 F:\公司资料 到 ~/公司资料/
从 root@192.168.1.100 复制 /home/user/dataset 到 ~/data/
从 192.168.1.50 复制 /Users/john/Documents/project 到 ~/project/
从用户输入中提取:
| 参数 | 必需 | 默认值 | 说明 |
|---|---|---|---|
| remote_ip | ✅ | - | 远程 IP 地址 |
| remote_path | ✅ | - | 远程路径(支持 Windows/Mac/Linux 格式) |
| remote_user | ❌ | 询问或 vip | 远程用户名 |
| local_dest | ❌ | ~/远程资料/{ip}/ | 本地目标路径 |
根据路径格式自动判断远程系统类型:
| 路径格式 | 系统 | SCP 路径转换 |
|---|---|---|
F:\公司资料 或 C:/xxx | Windows | /f/公司资料 |
/Users/xxx | macOS | 直接使用 |
/home/xxx 或 /root/xxx | Linux | 直接使用 |
Windows 路径转换规则:
F:\xxx → /f/xxxD:\ → /d/\ → 正斜杠 // 前缀ssh -o ConnectTimeout=5 -o BatchMode=yes {user}@{ip} "echo ok" 2>&1
mkdir -p {local_dest}
scp -r -o StrictHostKeyChecking=no {user}@{ip}:"{converted_path}" {local_dest}
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 编码乱码失败
自动检测失败原因并给出对应系统的修复命令:
检查是否已安装:
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
开启远程登录:
# 图形界面:系统设置 → 通用 → 共享 → 远程登录 → 打开
# 命令行:
sudo systemsetup -setremotelogin on
验证:
ssh localhost # 应能连接
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)
| 条件 | Windows | macOS | Linux |
|---|---|---|---|
| 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}
自动切换 rsync(支持断点续传):
rsync -avz --progress -e "ssh -o StrictHostKeyChecking=no" {user}@{ip}:"{path}" {local_dest}
支持多路径:
从 192.168.6.81 复制 F:\资料1 和 F:\资料2
| 问题 | 原因 | 解决方案 |
|---|---|---|
| Connection closed | SSH 服务未开启 | 按上方指南开启 |
| Permission denied | 密码错误或用户不存在 | 检查 whoami 和密码 |
| 中文乱码 | Windows GBK 编码 | 使用 tar 管道 + chcp 65001 |
| No such file | 路径格式错误 | 检查 Windows 路径转换 |
| Host key verification failed | 首次连接未信任 | 加 -o StrictHostKeyChecking=no |
| Connection timed out | 防火墙阻断 | 放通 22 端口 |
用户: 从 192.168.6.81 复制 F:\公司资料\一冶大模型\资料
助手:
1. 检测到 Windows 路径,转换为 /f/公司资料/一冶大模型/资料
2. 测试 SSH 连接...
3. 连接成功,使用 tar 管道传输(解决中文路径问题)
4. 完成!共复制 109 个文件,保存在 ~/远程资料/192.168.6.81/
用户: 从 root@192.168.1.100 复制 /home/user/dataset
助手:
1. 检测到 Linux 路径
2. 测试 SSH 连接...
3. 连接成功,使用 scp 传输
4. 完成!共复制 256 个文件,保存在 ~/远程资料/192.168.1.100/
用户: 从 192.168.1.50 复制 /Users/john/Projects/app
助手:
1. 检测到 macOS 路径
2. 测试 SSH 连接...
3. 连接成功,使用 scp 传输
4. 完成!保存在 ~/远程资料/192.168.1.50/