远程接入 · 先连接,再构建

连上你的云端 Mac

VNC 打开 macOS 图形界面,SSH 接管脚本与 CI。你连接的是一台独享物理 Mac,不是虚拟机;Xcode 调试与自动化构建可以各走合适的入口。

已开通主机?先准备主机地址、SSH 端口、用户名与连接凭据。下文以 SSH 隧道承载 VNC 为推荐路径。

图形操作
VNC 屏幕共享
命令执行
SSH / runner
macOS 图形工作区 连接后示意
Xcode 项目 Release 构建检查

同一台物理节点上的图形界面与命令行

BuildSettings.xcconfigRelease
CONFIGURATION = Release
SDKROOT = iphoneos
DEBUG_INFORMATION_FORMAT = dwarf-with-dsym
ENABLE_TESTABILITY = NO
归档签名导出
模拟器预览
界面检查 布局 · 交互
VNC:查看与操作桌面 SSH:执行构建命令
工作区布局示意,非实时桌面或性能结果。实际系统界面与工具版本以主机配置为准。
选对入口

需要看画面,还是只执行命令?

第一次配置工具链,可以先用屏幕共享核对图形设置;流水线稳定后,让 runner 通过命令行工作。两种方式访问同一台主机,不需要为图形操作再建立一套构建环境。

图形界面

VNC 屏幕共享

适合打开 Xcode、检查模拟器、查看 Keychain 设置和排查需要鼠标操作的步骤。看到的是远端主机的画面,不是将编译任务放到本地执行。

  • 先使用单显示器与适中的分辨率,确认文字、鼠标和键盘输入正常。
  • 推荐经 SSH 隧道连接,不把 VNC 端口直接暴露到公网。
  • 断开查看器不等于关闭主机;长任务应交给 CI 或可恢复会话。
适用任务:界面调试、首次配置、交互式排查
命令行

SSH 与 self-hosted runner

适合安装依赖、执行 xcodebuild、整理日志和注册 CI runner。SSH 不传输桌面画面,日常脚本操作不必同时保持 VNC 在线。

  • 首次连接核验主机指纹,再接受主机密钥。
  • 交互式管理优先使用 SSH 公钥;自动化任务使用独立、可撤销的凭据。
  • 持续构建交给 runner 服务,不依赖笔记本一直打开终端。
适用任务:自动化打包、依赖管理、日志诊断

不要把 VNC 桌面密码、SSH 登录密码和 SSH 私钥口令视为同一项。连接失败时,先核对凭据对应的协议,再修改客户端设置。

macOS 客户端

Finder 发起连接,屏幕共享接管桌面

推荐先完成下文的 SSH 隧道,再连接本地转发地址。这样 VNC 数据经过加密通道,不需要单独开放远端桌面端口。

  1. 01

    核对主机信息

    登录控制台,找到对应实例的连接信息。记录主机地址、SSH 端口与用户名;VNC 凭据单独核对。若地址或端口与示例不同,始终使用实例实际提供的值。

  2. 02

    保持隧道在线

    在本地终端运行本页的转发命令。命令使用 -N 时,成功后没有交互式命令提示符属于正常行为。终端保持打开;出现报错则先处理报错,不继续尝试桌面连接。

  3. 03

    输入 VNC 地址

    在 Finder 中选择“前往 → 连接服务器”,或按 ⌘ K,输入 vnc://127.0.0.1:15900。系统会调用“屏幕共享”App,再按提示输入远端的 VNC 连接凭据。

  4. 04

    先验证,再调画面

    先确认能操作访达、输入文字与打开 Xcode。需要操作时选择控制模式,而不是仅观察;画面超出本地窗口时先启用缩放显示,再按网络条件调整画质。

本机环回地址只在隧道运行的那台电脑上有效。若在另一台电脑打开查看器,需要在那台电脑上独立建立隧道,不能沿用前一台电脑的本地连接。

Windows / Linux 客户端

主机与端口分开填,画质从保守设置开始

使用支持 VNC 协议的查看器,例如 TigerVNC。Windows 可使用 OpenSSH 客户端,Linux 可使用终端中的 ssh 建立隧道;桌面查看器再连接本机转发端口。

Windows:先运行 SSH,再打开查看器

在 PowerShell 或 Windows Terminal 中执行隧道命令。若系统提示找不到 ssh,先检查系统的 OpenSSH 客户端功能是否已安装。

在 VNC 查看器的主机字段填 127.0.0.1,端口填 15900。部分客户端把单冒号后的数字当作显示编号;若仅提供一个地址框,请按该客户端的“显式端口”格式输入。

键盘映射:先验证 Command、Option 与常用快捷键。

Linux:将通道与画面分开排查

在一个终端保持 SSH 隧道运行,再启动图形 VNC 查看器。若隧道已退出,查看器连接本地端口失败并不是远端桌面密码错误。

通过软件包管理器安装客户端时,选择支持远端认证方式的版本。遇到“不支持的安全类型”,先核对兼容性,不要直接关闭认证或降低服务端安全设置。

网络检查:确认客户端实际连接的是本地转发端口。
以下是客户端起始设置,不是画质或帧率承诺;选项名称随查看器版本不同。
设置项 起始建议 什么时候调整
色深 自动选择;链路受限时尝试 16-bit 检查截图、颜色或细字时改为完整色彩;降低色深不适合颜色验收。
编码与压缩 保留自动编码,使用自适应压缩 拖动窗口明显卡顿时适度提高压缩;文字模糊时降低有损压缩。
桌面尺寸 先用 1440 × 900 或 1600 × 900 确认交互稳定后再提高分辨率,避免一开始传输多块高分辨率画面。
持续刷新 使用自适应更新,关闭不必要的持续刷新 仅在排查动态界面时提高更新频率;代码编辑不需要视频级画面更新。
剪贴板 按需启用,敏感操作时关闭同步 复制证书口令或凭据前先检查本地与远端的同步方向。
推荐连接路径

用一条 SSH 隧道承载 VNC

下面的地址属于文档示例地址,不能直接连接。将 192.0.2.10、macuser 和端口替换成控制台给出的实际连接信息。示例假定远端 VNC 服务监听主机自身的 5900 端口。

本地查看器127.0.0.1:15900
SSH 加密通道主机地址与 SSH 端口
远端 VNC 服务127.0.0.1:5900
在你的本地电脑执行
ssh -N -T -L 127.0.0.1:15900:127.0.0.1:5900 -o ExitOnForwardFailure=yes -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -p 22 macuser@192.0.2.10

这条命令做什么

-L 只在本机环回地址监听;第一个端口是本地入口,最后的端口是远端 VNC 服务。-p 指定 SSH 端口,不是 VNC 端口。-N -T 表示只转发,不打开远端交互式终端。

如何确认与退出

首次连接先核验 SSH 指纹。成功后用查看器连接本机端口;按 Ctrl C 关闭隧道。若提示本地端口已占用,可把 15900 换成其他未使用端口,并同步修改查看器地址。

报错按层处理

连接超时先查地址、SSH 端口与来源限制;认证失败先查用户名与密钥;出现转发目标拒绝连接,核对远端 VNC 服务和端口。不要通过反复修改密码来处理所有连接问题。

先验证密钥登录,再关闭密码登录

为本机生成独立的 Ed25519 密钥,并设置私钥口令。只将公钥内容加入远端用户的 ~/.ssh/authorized_keys;私钥留在本机,不上传主机、仓库或工单。

若已有同名密钥,不要覆盖。可改用新的文件名,并在连接时通过 -i 指定。公钥文件以 .pub 结尾,私钥文件没有这个后缀。

生成专用于连接的密钥
ssh-keygen -t ed25519 -a 64 -f ~/.ssh/armrdp_ed25519

macOS 与 Linux 上,远端用户的 ~/.ssh 目录通常设为 700,authorized_keys 设为 600。Windows 本地私钥应通过文件访问权限限制读取,不要机械照搬 Unix 权限命令。

画面与链路

先减少画面负担,再判断节点距离

编译在远端执行,桌面响应还受本地网络、跨网路由、分辨率与画面变化量影响。不要把一次 VNC 拖动窗口的感受当成主机编译性能,也不要把地理距离直接当成延迟测量。

  1. 01

    先收窄画面

    只保留一个显示器,减少高分辨率桌面、动态背景和多窗口动画。调整远端桌面尺寸比单纯缩小本地查看器窗口更能减少待传输的画面数据。

  2. 02

    一次只改一项

    依次测试分辨率、色深和压缩。用相同操作复查,例如打开同一个项目或拖动同一个窗口;若同时改多项,难以判断哪项设置真正有效。

  3. 03

    再检查网络路径

    暂停本地大文件传输,优先使用稳定的有线网络。可以比较 SSH 的交互反馈与 VNC 画面更新:前者流畅、后者迟缓时,先排查画面设置,而不是立即更换机型。

5 个节点的地理与时区参考。以下不是逐城市实测延迟;可用性以控制台实时返回为准。
节点 当地时区 选择时优先考虑
新加坡 UTC+8 团队主要位于东南亚时,可作为首个连接测试节点。
日本(东京) UTC+9 团队主要位于日本或东亚时,比较本地网络到此节点的实际路径。
韩国(首尔) UTC+9 团队主要位于韩国或东北亚时,结合运营商路由进行选择。
香港 UTC+8 团队主要位于华南与东南亚时,验证交互体验与仓库访问路径。
美国西部 UTC−8 / UTC−7 团队主要位于北美西岸时优先评估;时区随当地夏令时变化。

如果桌面仅用于偶尔配置,节点选择还应考虑代码仓库、依赖缓存和制品上传的路径。持续打包优先保证工具链与流水线稳定,VNC 不需要整晚保持连接。

连接安全

每次收紧权限,都保留一条验证路径

远程安全设置的顺序很重要。先确认新方式可用,再撤销旧方式;避免同时修改密钥、来源地址与认证策略,导致无法区分故障来源。

关闭密码登录前

保留当前 SSH 会话,另开一个终端,用指定私钥建立新连接,并验证所需管理权限。成功后再调整 SSH 密码认证策略;修改前检查配置语法,按当前系统的服务管理方式使配置生效。

通过标准:新会话能用公钥登录,且必要命令能正常执行。

限制来源 IP 前

先确认本地公网出口是否固定,再在适用的网络或主机访问规则中允许该地址。不要把家庭网络的临时出口当作永久地址,也不要对不确认的接口直接套用防火墙命令。

通过标准:允许的网络可连接,其他来源无法访问相应端口。

定期轮换凭据

不同成员和自动化任务使用独立密钥。成员离开、设备遗失或密钥可能泄露时,先部署并测试新公钥,再删除旧公钥;同时检查 CI 中保存的凭据与相关访问记录。

通过标准:旧密钥已撤销,当前 runner 与管理连接仍可用。

仍然连不上?把问题描述到“哪一层”

在控制台提交工单,附主机编号、客户端系统与版本、使用的协议、错误原文、发生时间与时区,以及是否通过 SSH 隧道。截图先遮挡密码、令牌与其他敏感信息;不要发送私钥或完整证书。

连接跑通,再把构建交给 runner

临时验证可按天起租,入口价 $21.1/天。先确认 SSH 与屏幕共享都能使用,再固定 Xcode 与依赖版本,让日常打包不再依赖本地电脑持续在线。