利用蒲公英纯软组网进行远程 AI 开发
更新日期:2026-06-05 14:40:45
固定一台开发机保存代码/数据/模型,在外通过虚拟局域网进行桌面控制或 SSH/VS Code 开发,并进行内网应用使用
一个很常见的个人 AI 开发场景:家里或办公室固定放一台高性能电脑,GPU、数据集、模型权重、代码仓库和开发环境都保存在这台电脑上;人在外面时,希望用轻薄本继续 coding、看日志、跑训练、调试 Web UI,而不是把几百 GB 数据同步到随身电脑。
核心思路是:先用贝锐蒲公英“纯软件成员”把开发机和外出设备加入同一个虚拟局域网,再通过开发机的蒲公英虚拟 IP 连接桌面或 SSH。蒲公英官方文档说明,客户端成员可用于电脑/手机登录蒲公英客户端实现设备间互访;同一网络内成员登录后可以相互访问。
方案一:远程桌面/屏幕共享
适合需要 GUI、浏览器、数据标注工具、驱动设置和第一次排障。Mac 使用屏幕共享/VNC;Windows 使用远程桌面 RDP。
方案二:SSH + VS Code Remote
适合日常 coding、训练、日志、Jupyter、Gradio、TensorBoard,带宽占用低,推荐作为主工作流。
最佳实践:日常用 SSH/VS Code;遇到必须操作桌面的场景,再打开远程桌面。
1.蒲公英纯软组网配置
1.1 两种建网方式
| 方式 | 适用场景 | 操作要点 |
|---|---|---|
| 方式 A:登录相同账号自动创建 | 个人使用、设备少、想最快跑通。 | 在每台设备安装蒲公英客户端,用同一个贝锐账号登录;官方文档说明登录后会自动生成客户端成员,并加入账号下同一网络。 |
| 方式 B:手动创建客户端成员 UID | 设备较多、要分配给不同用户、希望权限可追溯。 | 在蒲公英管理平台的软件成员/成员列表添加客户端成员,生成 UID 和密码;每台设备用对应 UID 登录。 |
1.2 手动创建网络与成员
- 登录蒲公英网络管理平台,点击【异地组网】 → 【网络成员】。
- 点击“+ 创建网络”,填写网络名称。
- 网络类型优先选择“对等网络”:对等网络内所有成员可互相访问;集散网络会区分中心节点和普通成员;自定义网络用于更精细的访问权限。
- 添加软件成员。个人开发场景通常使用“客户端成员”;官方说明客户端成员可在电脑、手机上登录客户端实现设备互访。
- 在开发机和外出设备分别安装客户端,并用贝锐账号或成员 UID 登录。
- 在客户端成员列表中找到开发机的虚拟 IP,并记录到后续 SSH/RDP/VNC 配置中。
1.3 连通性测试
假设开发机蒲公英虚拟 IP 为 172.30.91.28。在外出设备上先做最小测试。
连通性测试命令
# Windows PowerShell
ping 172.30.91.28
Test-NetConnection 172.30.91.28 -Port 22
Test-NetConnection 172.30.91.28 -Port 3389
# macOS / Linux Terminal
ping 172.30.91.28
nc -vz 172.30.91.28 22
nc -vz 172.30.91.28 5900
排障提示:有些系统默认禁ping,但 SSH/RDP/VNC 仍可连接。所以 ping 不通时,不要立即判定蒲公英失败;继续测试具体端口。
2. 方案一:远程桌面 / 屏幕共享
远程桌面适合需要完整 GUI 的场景:浏览器登录、图形化 IDE、驱动/显示设置、数据标注工具、授权弹窗或第一次排障。缺点是对延迟和带宽更敏感。
2.1 macOS 开发机:开启屏幕共享
Apple 官方说明:开启屏幕共享后,网络中其他电脑可以远程查看并控制 Mac;设置路径是“系统设置 → 通用 → 共享 → 屏幕共享”。如果“远程管理”已开启,需要先关闭,因为 Screen Sharing 和 Remote Management 不能同时开启。
- 在开发机 Mac 上打开“系统设置 → 通用 → 共享”。
- 如果“远程管理”已开启,先关闭它。
- 点击“屏幕共享”旁边的信息按钮,打开“屏幕共享”。
- “允许访问”建议选择“仅这些用户”,只添加自己的开发账号。
- 如果外出设备是 Windows,需要使用 VNC 客户端连接 Mac,可勾选“VNC viewers may control screen with password”并设置独立 VNC 密码。
从另一台 Mac 连接
Apple 官方说明可通过“屏幕共享”App 连接另一台已开启屏幕共享的 Mac;可以在 App 中新建连接并输入主机名或地址。
Mac 连接 Mac 屏幕共享
# 在 macOS 上打开“屏幕共享”App,输入:
vnc://172.30.91.28
# 或在 Finder → 前往 → 连接服务器 中输入:
vnc://172.30.91.28
从 Windows 连接 Mac
Windows 没有内置 macOS Screen Sharing 客户端。你可以使用任意可信 VNC Viewer,连接开发机的蒲公英虚拟 IP,端口通常为 5900。若只在蒲公英虚拟局域网内连接,外网路由器不需要映射 5900。
Windows VNC 客户端连接参数
VNC Server / Host: 172.30.91.28
Port: 5900
Password: 使用你在 macOS 屏幕共享中设置的 VNC 密码
2.2 Windows 开发机:开启远程桌面 RDP
Windows 自带的局域网图形远程方式是 Remote Desktop/RDP。Microsoft Learn 说明,启用远程桌面后,远程设备可以像坐在电脑前一样访问应用、文件和网络资源;但也会打开本机端口,因此只应在可信网络上启用,并确保远程账号使用强密码。
- 在开发机 Windows 上确认版本:设置 → 系统 → 关于 → Windows 规格。Windows Home 不能作为 RDP 被控端;Pro/Enterprise/Education/Server 可以。
- 进入“设置 → 系统 → 远程桌面”,打开“启用远程桌面”,确认弹窗。
- 点击“远程桌面用户”或“选择可远程访问此电脑的用户”,加入允许远程登录的账号。管理员组默认通常可访问,但仍建议显式检查。
- 保持 Network Level Authentication(网络级别身份验证)开启;Microsoft Learn 建议在多数环境中开启 NLA。
- 在外出设备上用开发机的蒲公英虚拟 IP 连接,而不是公网 IP。
从 Windows 连接 Windows 开发机
Windows RDP 连接
开始菜单搜索:远程桌面连接
或 Win + R 输入:mstsc
计算机:172.30.91.28
用户名:开发机上的 Windows 用户名
密码:该用户的 Windows 登录密码
从 Mac 连接 Windows 开发机
Microsoft 支持文档说明,从 macOS 或 iOS 连接远程 Windows PC 时,可打开 Windows App,添加远程 PC 名称并启动连接;这里的“PC 名称”可以填写蒲公英虚拟 IP。
- 在 Mac App Store 安装并打开 Windows App。
- 添加 PC,PC name 填写 172.30.91.28。
- User account 可先选择 Ask when required,也可以保存开发机用户凭据。
- 显示设置中可按需要选择全屏、分辨率、多显示器。
Windows Home 说明:Windows Home 如果是外出设备,仍然可以作为 RDP 客户端连接到 Windows Pro 开发机;限制只在“Windows Home 不能作为被控端”。
3. 方案二:SSH + VS Code Remote 终端开发
对于 AI 开发,SSH 通常比远程桌面更稳定:只传输命令、文本、少量文件和端口转发,弱网下也能写代码、启动训练、看日志。VS Code 官方 Remote - SSH 文档说明,可以从命令面板选择“Remote-SSH: Connect to Host...”连接远程主机,也可以先添加 SSH host。
3.1 macOS 开发机:开启 Remote Login
Apple 官方文档说明,打开 Remote Login 后,可以用 SSH 或 SFTP 从另一台电脑访问 Mac;设置路径是“系统设置 → 通用 → 共享 → Remote Login”。
- 在开发机 Mac 上打开“系统设置 → 通用 → 共享”。
- 点击“远程登录 / Remote Login”旁边的信息按钮,开启 Remote Login。
- “允许访问”建议选择“仅这些用户”,添加自己的开发账号。
- 记录系统显示的 SSH 命令,或直接使用蒲公英虚拟 IP。
连接 macOS 开发机
# 从外出设备连接 Mac 开发机
ssh devuser@172.30.91.28
# 首次连接会提示确认主机指纹,确认 IP/主机无误后输入 yes。
3.2 Windows 开发机:安装并启动 OpenSSH Server
Microsoft Learn 说明,Windows 可通过“可选功能”安装 OpenSSH Server;安装后需要启动 OpenSSH SSH Server 服务,并建议设置为自动启动。安装 OpenSSH Server 会创建并启用名为 OpenSSH-Server-In-TCP 的防火墙规则,用于允许 22 端口入站流量;若该规则未启用,连接会被拒绝或重置。
图形界面安装
- 开始菜单搜索“可选功能 / Optional Features”。
- 选择“查看功能 / 添加功能”,搜索 OpenSSH Server,安装。
- 打开 services.msc,找到“OpenSSH SSH Server”。
- 启动类型设为 Automatic,点击 Start 启动服务。
PowerShell 安装与启用
Windows OpenSSH Server 配置
# 以管理员身份打开 PowerShell
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
# 安装 OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# 启动并设置开机自启
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
# 检查/创建 22 端口防火墙规则
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue)) {
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' `
-DisplayName 'OpenSSH Server (sshd)' `
-Enabled True -Direction Inbound -Protocol TCP `
-Action Allow -LocalPort 22
}
连接 Windows 开发机
连接 Windows 开发机
# 从 Windows / macOS / Linux 外出设备连接
ssh devuser@172.30.91.28
# 如果是域账号,可使用:
ssh domain\username@172.30.91.28
3.3 配置 SSH config
在外出设备上创建或编辑 SSH 配置文件:macOS/Linux 为 ~/.ssh/config,Windows 为 C:\Users\你的用户名.ssh\config。
~/.ssh/config 示例
Host home-ai
HostName 172.30.91.28
User devuser
Port 22
ServerAliveInterval 30
ServerAliveCountMax 3
使用 Host 别名
# 之后直接这样连接
ssh home-ai
# VS Code 也会读取这个 Host 名称
# 命令面板:Remote-SSH: Connect to Host... → home-ai
3.4 配置 SSH 密钥(推荐)
首次跑通可以用密码;长期使用建议改为 SSH 密钥,并给私钥设置 passphrase。
macOS/Linux 目标机密钥配置
# 在外出设备上生成 Ed25519 密钥
ssh-keygen -t ed25519 -C "home-ai-dev"
# macOS/Linux 开发机可用 ssh-copy-id
ssh-copy-id devuser@172.30.91.28
# 测试
ssh home-ai
Windows 目标机也支持 authorized_keys。最简单方式是先用密码 SSH 登录一次,然后把公钥追加到目标用户的 %USERPROFILE%.ssh\authorized_keys。管理员账号的密钥规则在 Windows OpenSSH 中可能涉及 C:\ProgramData\ssh\administrators_authorized_keys,若遇到问题优先使用普通开发账号测试。
3.5 VS Code Remote - SSH
- 在外出设备安装 VS Code。
- 安装扩展:Remote - SSH。
- 按 F1 / Ctrl+Shift+P / ⇧⌘P,执行“Remote-SSH: Add New SSH Host...”或“Remote-SSH: Connect to Host...”。
- 选择 home-ai,首次连接时按系统类型选择 Linux / macOS / Windows。
- 连接成功后,打开开发机上的项目目录,例如 /home/devuser/projects/llm-lab 或 C:\Users\devuser\projects\llm-lab。
理解工作方式:VS Code Remote - SSH 的本质是:VS Code UI 在外出设备上,代码、终端、扩展服务和文件系统在开发机上。这样不需要把数据和环境搬到随身电脑。
3.6 端口转发:Jupyter / Gradio / TensorBoard
很多 AI 工具会在开发机本地开 Web 服务。为了安全,建议服务只监听 127.0.0.1,再通过 SSH -L 转发到外出设备。
常用端口转发模板
# 例 1:Jupyter Lab
ssh -L 8888:127.0.0.1:8888 home-ai
jupyter lab --ip 127.0.0.1 --port 8888 --no-browser
# 外出设备浏览器打开 http://127.0.0.1:8888
# 例 2:Gradio / Stable Diffusion / Web UI
ssh -L 7860:127.0.0.1:7860 home-ai
# 外出设备浏览器打开 http://127.0.0.1:7860
# 例 3:TensorBoard
ssh -L 6006:127.0.0.1:6006 home-ai
# 外出设备浏览器打开 http://127.0.0.1:6006
安全建议:不要为了省事把 Jupyter/Gradio 直接监听 0.0.0.0 并开放到公网。使用蒲公英 + SSH 端口转发,可以减少暴露面。
3.7 让训练任务不怕断线
网络断开不应导致训练任务终止。macOS/Linux/WSL 可优先使用 tmux;Windows PowerShell 长任务可考虑 Windows Terminal + nohup/日志重定向、WSL、或任务管理器/计划任务方式。
tmux 训练模板
# Linux/macOS/WSL:新建会话
tmux new -s train
# 在 tmux 中启动训练
python train.py --config configs/qwen_lora.yaml 2>&1 | tee logs/train.log
# 断开会话:Ctrl-b 后按 d
# 重新进入:
tmux attach -t train
# 看日志
tail -f logs/train.log
4. 远程AI开发落地建议
4.1 推荐目录结构
开发机上的目录建议
~/projects/
llm-lab/ # Git 仓库,只放代码、配置、小脚本
configs/
scripts/
notebooks/
logs/ # 可写入日志,但大文件不建议入 Git
data/ # 大数据集,不入 Git
checkpoints/ # 模型权重与 checkpoint,不入 Git
envs/ # conda / venv / docker compose 文件
Git 只管理代码、配置和小型文档;数据集、模型权重、输出图片、checkpoint 放到 .gitignore。
外出设备不保存核心数据;只通过 VS Code Remote、SSH、端口转发访问开发机。
训练日志统一写到 logs/,方便 tail -f 或 TensorBoard 查看。
需要下载少量结果时,用 scp/rsync/VS Code 文件面板;大文件优先留在开发机。
4.2 常用日常命令
远程 AI 开发命令速查
# 进入项目
ssh home-ai
cd ~/projects/llm-lab
# 查看 GPU
nvidia-smi
# Conda 环境
conda activate ai
# 拉取代码
git pull --rebase
# 启动训练并保存日志
python train.py 2>&1 | tee logs/$(date +%F_%H%M)-train.log
# 下载一个小文件到本地
scp home-ai:~/projects/llm-lab/logs/latest.log ./latest.log
# 同步一个结果目录(macOS/Linux)
rsync -avP home-ai:~/projects/llm-lab/outputs/ ./outputs/
4.3 安全与可靠性建议
| 风险点 | 建议做法 |
|---|---|
| 公网端口暴露 | 不要在路由器上直接映射 22/3389/5900 到公网;通过蒲公英虚拟 IP 访问。Microsoft 也提醒启用远程桌面会打开端口,应只在可信网络上启用。 |
| 弱密码/共享账号 | 使用独立开发账号、强密码、SSH 密钥;不要把贝锐账号、UID 密码、RDP 密码发给他人。 |
| 权限过大 | macOS 屏幕共享/远程登录选择“仅这些用户”;Windows RDP 只添加必要账号;SSH 不用 root/Administrator 做日常开发。 |
| 开发机睡眠 | 关闭系统睡眠,只允许显示器关闭。长时间训练前确认电源、散热、网络稳定。 |
| 成员过多 | 个人小规模用对等网络;多人场景考虑集散网络或自定义网络,减少成员之间横向访问。 |
| 工具更新 | 定期更新蒲公英客户端、系统、OpenSSH、VS Code 和扩展。 |
文档内容是否对您有帮助?
如果遇到产品相关问题,您可咨询 在线客服 寻求帮助。



相关问题
其他问题




