通过 SSH/SCP 从远程电脑(Windows/Mac/Linux)复制文件到本地 Mac。 支持任意两台电脑之间的文件传输,自动处理路径格式、SSH 诊断、中文编码。
text
从 192.168.6.81 复制 F:\公司资料\一冶大模型\资料
text
从 vip@192.168.6.81 复制 F:\公司资料 到 ~/公司资料/
text
从 root@192.168.1.100 复制 /home/user/dataset 到 ~/data/
text
从 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:/xxxWindows/f/公司资料``/Users/xxxmacOS直接使用/home/xxx 或 /root/xxxLinux直接使用
Windows 路径转换规则:
F:\xxx → /f/xxxD:\ → /d/\ → 正斜杠 // 前缀bash
ssh -o ConnectTimeout=5 -o BatchMode=yes {user}@{ip} "echo ok" 2>&1
bash
mkdir -p {local_dest}
scp -r -o StrictHostKeyChecking=no {user}@{ip}:"{converted_path}" {local_dest}
bash
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 编码乱码失败
自动检测失败原因并给出对应系统的修复命令:
检查是否已安装:
powershell
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
安装 OpenSSH 服务器:
powershell
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
启动服务:
powershell
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
放通防火墙:
powershell
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
验证:
powershell
Get-Service sshd # 应显示 Running
netstat -an | findstr :22 # 应显示 LISTENING
开启远程登录:
bash
# 图形界面:系统设置 → 通用 → 共享 → 远程登录 → 打开
# 命令行:
sudo systemsetup -setremotelogin on
验证:
bash
ssh localhost # 应能连接
Ubuntu/Debian:
bash
sudo apt update && sudo apt install openssh-server -y
sudo systemctl start sshd
sudo systemctl enable sshd
CentOS/RHEL/Rocky:
bash
sudo yum install openssh-server -y
sudo systemctl start sshd
sudo systemctl enable sshd
放通防火墙:
bash
# Ubuntu (ufw)
sudo ufw allow 22/tcp
# CentOS (firewalld)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
验证:
bash
sudo systemctl status sshd # 应显示 active (running)
条件WindowsmacOSLinuxSSH 服务❌ 需手动安装✅ 默认有❌ 需安装防火墙放通 22❌ 需手动✅ 自动❌ 需手动用户名登录账号登录账号登录账号密码/密钥需要需要需要
当密钥认证失败时,使用 sshpass:
bash
sshpass -p "{password}" scp -r -o StrictHostKeyChecking=no {user}@{ip}:"{path}" {local_dest}
密码仅在当前会话使用,不会被保存
首次连接后配置密钥免密:
bash
# 生成密钥(如果没有)
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ""
# 复制公钥到远程
ssh-copy-id -i ~/.ssh/id_ed25519.pub {user}@{ip}
自动切换 rsync(支持断点续传):
bash
rsync -avz --progress -e "ssh -o StrictHostKeyChecking=no" {user}@{ip}:"{path}" {local_dest}
支持多路径:
text
从 192.168.6.81 复制 F:\资料1 和 F:\资料2
问题原因解决方案Connection closedSSH 服务未开启按上方指南开启Permission denied密码错误或用户不存在检查 whoami 和密码中文乱码Windows GBK 编码使用 tar 管道 + chcp 65001No such file路径格式错误检查 Windows 路径转换Host key verification failed首次连接未信任加 -o StrictHostKeyChecking=noConnection timed out防火墙阻断放通 22 端口
text
用户: 从 192.168.6.81 复制 F:\公司资料\一冶大模型\资料
助手:
1. 检测到 Windows 路径,转换为 /f/公司资料/一冶大模型/资料
2. 测试 SSH 连接...
3. 连接成功,使用 tar 管道传输(解决中文路径问题)
4. 完成!共复制 109 个文件,保存在 ~/远程资料/192.168.6.81/
text
用户: 从 root@192.168.1.100 复制 /home/user/dataset
助手:
1. 检测到 Linux 路径
2. 测试 SSH 连接...
3. 连接成功,使用 scp 传输
4. 完成!共复制 256 个文件,保存在 ~/远程资料/192.168.1.100/
text
用户: 从 192.168.1.50 复制 /Users/john/Projects/app
助手:
1. 检测到 macOS 路径
2. 测试 SSH 连接...
3. 连接成功,使用 scp 传输
4. 完成!保存在 ~/远程资料/192.168.1.50/