SSH:构建、自动化与日志
适合执行 xcodebuild、fastlane、依赖安装、仓库同步、日志检查和后台脚本。网络短暂抖动时,可配合会话保持工具让远端任务继续运行。
- 适合
- 命令、脚本、持续构建
- 优势
- 带宽占用低,诊断信息完整
- 边界
- 不提供 macOS 图形界面
同一台云端 Mac 可以同时承担命令行和图形任务。稳定做法是让 SSH 负责长任务与诊断,让 VNC 负责必须看见桌面的操作。
适合执行 xcodebuild、fastlane、依赖安装、仓库同步、日志检查和后台脚本。网络短暂抖动时,可配合会话保持工具让远端任务继续运行。
适合使用 Xcode 图形界面、模拟器、素材管理、剪辑时间线与其他必须观察桌面状态的任务。延迟较高时,应先降低画质和分辨率,而不是反复重连。
不要根据其他订单沿用地址或端口。每次以当前服务在控制台显示的连接资料为准。
在当前服务详情中复制主机地址和 SSH 端口。地址、端口与节点共同构成连接目标,切换节点或服务后应重新核对。
用户名必须与连接资料逐字一致。不要把本地电脑用户名、仓库账号或团队成员名称代入 SSH 命令。
私钥文件只允许当前本地用户读取。macOS 或 Linux 可执行 chmod 600 ~/.ssh/lemonvm_key,再用 -i 指定文件。
首次连接出现主机指纹时,先与控制台显示的信息核对。只有内容一致才写入 known_hosts,不要直接跳过检查。
将 Host、HostName、User、Port 与 IdentityFile 写入本地 SSH 配置,可减少手工输入错误,但不要把私钥内容写进配置文件。
ssh -i ~/.ssh/lemonvm_key -p 端口 用户名@主机地址
第一次连接从中等画质和较低分辨率开始。确认输入、剪贴板与窗口切换正常后,再根据当前线路余量调整显示参数。
使用控制台提供的 VNC 主机与端口,不沿用 SSH 端口。若客户端要求组合地址,按客户端格式填写主机和端口。
优先保证鼠标、键盘与窗口响应。文字清晰度足够后再提升色彩和图像质量,避免首次连接就占满带宽。
高分辨率会增加每帧传输量。弱网环境先使用单显示器和较低分辨率,稳定后再调整远端桌面尺寸。
连接后先用一段无敏感信息的文本测试双向复制。不要通过共享剪贴板传递私钥、完整访问令牌或长期凭据。
记录客户端退出全屏和释放键盘捕获的快捷键,避免远端组合键被本地系统截获后误判为会话异常。
VNC 画面停滞时先通过 SSH 检查负载和网络。SSH 仍可连接通常说明物理节点在线,问题更可能位于图形会话或链路。
诊断时一次只改变一个变量。先确认 SSH 握手,再观察网络探测,最后执行一条可验证的远端命令。这样能区分凭据、端口、链路和任务环境问题。
Connecting to 后无响应:检查地址、端口与本地出口限制。$ ssh -v -p 端口 用户名@主机地址
debug1: Connecting to host [地址] port [端口]
debug1: Server host key: SHA256:[指纹]
debug1: Authentication succeeded (publickey)
$ ping -c 5 主机地址
5 packets transmitted, 5 packets received
round-trip min/avg/max = 41.2/44.8/49.1 ms
$ ssh lemon-node "xcodebuild -version"
Xcode [当前版本]
Build version [当前构建号]
$ ssh lemon-node "cd ~/project && xcodebuild build"
** BUILD SUCCEEDED **
下表用于观察不同接入地到新加坡、东京、首尔、香港、美国西部的相对差异。交互式 VNC 更看重延迟与抖动,后台构建则更看重连接稳定性和持续吞吐。
| 接入地与运营商 | 新加坡 | 东京 | 首尔 | 香港 | 美国西部 |
|---|---|---|---|---|---|
| 上海 · 中国电信 | 68 ms | 42 ms | 51 ms | 35 ms | 146 ms |
| 北京 · 中国联通 | 91 ms | 54 ms | 46 ms | 58 ms | 139 ms |
| 深圳 · 中国移动 | 53 ms | 67 ms | 76 ms | 24 ms | 168 ms |
| 台北 · 固定宽带 | 62 ms | 39 ms | 48 ms | 31 ms | 126 ms |
| 洛杉矶 · 企业光纤 | 171 ms | 112 ms | 124 ms | 143 ms | 27 ms |
阅读方法:同一接入地优先比较横向数字;用于 VNC 时,同时连续观察抖动和丢包。实际连接质量由本地 Wi-Fi、运营商出口、跨境路由和后台传输共同决定。
不要同时切节点、改画质和重启客户端。按下面六步逐项确认,每一步都记录调整前后的延迟、丢包或操作响应。
改用有线网络或稳定的 5GHz Wi-Fi,暂停本地下载和云同步。若同一局域网内其他设备也抖动,先处理本地链路。
连续探测至少数分钟,区分稳定高延迟与间歇性丢包。短时尖峰更可能造成 VNC 鼠标跳动和画面停顿。
在新加坡、东京、首尔、香港、美国西部中选择更接近主要访问方向的节点。团队应以主要操作者或构建依赖所在方向为准。
先降低颜色质量、压缩等级或帧率,观察输入响应是否改善。画面清晰但操作延迟高时,不要只提高带宽设置。
暂时切换到单屏和较低分辨率。若响应明显改善,说明每帧数据量已超过当前线路适合的范围。
检查仓库拉取、依赖下载、素材上传、产物回传和远端同步任务。大文件传输应与实时 VNC 操作错开执行。
远程连接的安全边界由本地密钥、初始凭据、会话锁定和团队交接共同构成。不要把长期访问资料粘贴到公开聊天或仓库。
为不同设备使用独立密钥,私钥只保存在受控终端。设备退出团队或丢失后,及时移除对应公钥。
首次登录完成环境核对后更新临时凭据。不要在脚本、构建日志或仓库配置中留下可直接使用的访问资料。
暂时离开时锁定远端桌面,不用关闭仍在执行的后台任务。共享工作空间还应同时锁定本地电脑。
多人协作时记录谁在什么时间执行任务,不共享一份长期密钥。交接时说明任务状态、日志位置和待处理步骤。
VNC 画面消失不等于物理节点停止。先用另一条连接通道确认状态,避免重复启动构建、覆盖输出或中断仍在执行的任务。
先检查本地网络,再测试目标主机和端口。网络恢复后重新连接,并查看任务日志和进程状态,不直接重复执行原命令。
确认点:本地出口、目标端口、最近日志时间通过控制台检查当前服务状态,再用 SSH 验证系统响应。恢复后检查电源和会话设置,避免长任务期间进入不合适的休眠状态。
确认点:SSH 响应、系统时间、运行进程降低显示参数并重新建立图形会话。不要在未确认任务状态前重启整台节点,后台构建可能仍在正常运行。
确认点:远端负载、图形会话、客户端设置重新连接后读取日志、退出码和产物目录。只有确认原任务结束或失败,才启动下一次构建,避免并发写入同一输出位置。
确认点:进程号、退出码、产物修改时间