VNC 屏幕共享
适合打开 Xcode、检查模拟器、查看 Keychain 设置和排查需要鼠标操作的步骤。看到的是远端主机的画面,不是将编译任务放到本地执行。
- 先使用单显示器与适中的分辨率,确认文字、鼠标和键盘输入正常。
- 推荐经 SSH 隧道连接,不把 VNC 端口直接暴露到公网。
- 断开查看器不等于关闭主机;长任务应交给 CI 或可恢复会话。
VNC 打开 macOS 图形界面,SSH 接管脚本与 CI。你连接的是一台独享物理 Mac,不是虚拟机;Xcode 调试与自动化构建可以各走合适的入口。
已开通主机?先准备主机地址、SSH 端口、用户名与连接凭据。下文以 SSH 隧道承载 VNC 为推荐路径。
同一台物理节点上的图形界面与命令行
CONFIGURATION = Release
SDKROOT = iphoneos
DEBUG_INFORMATION_FORMAT = dwarf-with-dsym
ENABLE_TESTABILITY = NO
第一次配置工具链,可以先用屏幕共享核对图形设置;流水线稳定后,让 runner 通过命令行工作。两种方式访问同一台主机,不需要为图形操作再建立一套构建环境。
适合打开 Xcode、检查模拟器、查看 Keychain 设置和排查需要鼠标操作的步骤。看到的是远端主机的画面,不是将编译任务放到本地执行。
适合安装依赖、执行 xcodebuild、整理日志和注册 CI runner。SSH 不传输桌面画面,日常脚本操作不必同时保持 VNC 在线。
不要把 VNC 桌面密码、SSH 登录密码和 SSH 私钥口令视为同一项。连接失败时,先核对凭据对应的协议,再修改客户端设置。
推荐先完成下文的 SSH 隧道,再连接本地转发地址。这样 VNC 数据经过加密通道,不需要单独开放远端桌面端口。
登录控制台,找到对应实例的连接信息。记录主机地址、SSH 端口与用户名;VNC 凭据单独核对。若地址或端口与示例不同,始终使用实例实际提供的值。
在本地终端运行本页的转发命令。命令使用 -N 时,成功后没有交互式命令提示符属于正常行为。终端保持打开;出现报错则先处理报错,不继续尝试桌面连接。
在 Finder 中选择“前往 → 连接服务器”,或按 ⌘ K,输入 vnc://127.0.0.1:15900。系统会调用“屏幕共享”App,再按提示输入远端的 VNC 连接凭据。
先确认能操作访达、输入文字与打开 Xcode。需要操作时选择控制模式,而不是仅观察;画面超出本地窗口时先启用缩放显示,再按网络条件调整画质。
本机环回地址只在隧道运行的那台电脑上有效。若在另一台电脑打开查看器,需要在那台电脑上独立建立隧道,不能沿用前一台电脑的本地连接。
使用支持 VNC 协议的查看器,例如 TigerVNC。Windows 可使用 OpenSSH 客户端,Linux 可使用终端中的 ssh 建立隧道;桌面查看器再连接本机转发端口。
在 PowerShell 或 Windows Terminal 中执行隧道命令。若系统提示找不到 ssh,先检查系统的 OpenSSH 客户端功能是否已安装。
在 VNC 查看器的主机字段填 127.0.0.1,端口填 15900。部分客户端把单冒号后的数字当作显示编号;若仅提供一个地址框,请按该客户端的“显式端口”格式输入。
在一个终端保持 SSH 隧道运行,再启动图形 VNC 查看器。若隧道已退出,查看器连接本地端口失败并不是远端桌面密码错误。
通过软件包管理器安装客户端时,选择支持远端认证方式的版本。遇到“不支持的安全类型”,先核对兼容性,不要直接关闭认证或降低服务端安全设置。
| 设置项 | 起始建议 | 什么时候调整 |
|---|---|---|
| 色深 | 自动选择;链路受限时尝试 16-bit | 检查截图、颜色或细字时改为完整色彩;降低色深不适合颜色验收。 |
| 编码与压缩 | 保留自动编码,使用自适应压缩 | 拖动窗口明显卡顿时适度提高压缩;文字模糊时降低有损压缩。 |
| 桌面尺寸 | 先用 1440 × 900 或 1600 × 900 | 确认交互稳定后再提高分辨率,避免一开始传输多块高分辨率画面。 |
| 持续刷新 | 使用自适应更新,关闭不必要的持续刷新 | 仅在排查动态界面时提高更新频率;代码编辑不需要视频级画面更新。 |
| 剪贴板 | 按需启用,敏感操作时关闭同步 | 复制证书口令或凭据前先检查本地与远端的同步方向。 |
下面的地址属于文档示例地址,不能直接连接。将 192.0.2.10、macuser 和端口替换成控制台给出的实际连接信息。示例假定远端 VNC 服务监听主机自身的 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 拖动窗口的感受当成主机编译性能,也不要把地理距离直接当成延迟测量。
只保留一个显示器,减少高分辨率桌面、动态背景和多窗口动画。调整远端桌面尺寸比单纯缩小本地查看器窗口更能减少待传输的画面数据。
依次测试分辨率、色深和压缩。用相同操作复查,例如打开同一个项目或拖动同一个窗口;若同时改多项,难以判断哪项设置真正有效。
暂停本地大文件传输,优先使用稳定的有线网络。可以比较 SSH 的交互反馈与 VNC 画面更新:前者流畅、后者迟缓时,先排查画面设置,而不是立即更换机型。
| 节点 | 当地时区 | 选择时优先考虑 |
|---|---|---|
| 新加坡 | UTC+8 | 团队主要位于东南亚时,可作为首个连接测试节点。 |
| 日本(东京) | UTC+9 | 团队主要位于日本或东亚时,比较本地网络到此节点的实际路径。 |
| 韩国(首尔) | UTC+9 | 团队主要位于韩国或东北亚时,结合运营商路由进行选择。 |
| 香港 | UTC+8 | 团队主要位于华南与东南亚时,验证交互体验与仓库访问路径。 |
| 美国西部 | UTC−8 / UTC−7 | 团队主要位于北美西岸时优先评估;时区随当地夏令时变化。 |
如果桌面仅用于偶尔配置,节点选择还应考虑代码仓库、依赖缓存和制品上传的路径。持续打包优先保证工具链与流水线稳定,VNC 不需要整晚保持连接。
远程安全设置的顺序很重要。先确认新方式可用,再撤销旧方式;避免同时修改密钥、来源地址与认证策略,导致无法区分故障来源。
保留当前 SSH 会话,另开一个终端,用指定私钥建立新连接,并验证所需管理权限。成功后再调整 SSH 密码认证策略;修改前检查配置语法,按当前系统的服务管理方式使配置生效。
先确认本地公网出口是否固定,再在适用的网络或主机访问规则中允许该地址。不要把家庭网络的临时出口当作永久地址,也不要对不确认的接口直接套用防火墙命令。
不同成员和自动化任务使用独立密钥。成员离开、设备遗失或密钥可能泄露时,先部署并测试新公钥,再删除旧公钥;同时检查 CI 中保存的凭据与相关访问记录。
临时验证可按天起租,入口价 $21.1/天。先确认 SSH 与屏幕共享都能使用,再固定 Xcode 与依赖版本,让日常打包不再依赖本地电脑持续在线。