博客 · Guides
如何配置一台远程 Mac mini
无显示器 Mac mini 的首日配置清单:账户、SSH 密钥、防火墙、pmset 电源设置、共享开关、Homebrew、备份、更新策略与监控。

第一天把远程 Mac mini 配置好,能避免第九十天才冒出来的大部分问题。下面是我们在一台全新无显示器 Mac mini 上会照着做的清单,命令均已对照当前 macOS 核实。
开始之前
在 Hatmac,付款后我们会完成配置并发邮件通知你。访问信息显示在账户的“My Macs”中,包括这台机器已配置的远程方式。下面所有操作都请遵守两条规则:
- 保留一个可用的会话。修改 SSH、防火墙或共享设置时,先在第二个会话中测试,再关闭第一个。
- 不要关闭你正在使用的访问方式。如需更换方式,请先提交工单。
以下命令适用于 Apple silicon 上的 zsh。以 sudo 开头的命令会要求输入管理员密码。
1. 用户与管理员账户
先把收到的初始密码改成只有你知道的密码:运行 passwd,或使用 系统设置 > 用户与群组。然后确定谁需要管理员权限。服务器上推荐这样分配:
- 一个管理员账户归你使用,用于配置和更新。
- 一个标准账户用于运行服务,例如 CI runner 或 agent,这样任务出错也改不了系统设置。
在 系统设置 > 用户与群组 中创建标准账户。查看管理员组成员:
dscl . -read /Groups/admin GroupMembership
2. 用 SSH 密钥代替密码
如果还没开启,在 系统设置 > 通用 > 共享 中打开“远程登录”,并通过旁边的信息按钮只允许需要的用户访问。各选项说明见 Apple 的 允许远程电脑访问你的 Mac。
在你自己的电脑上生成密钥并复制到 Mac:
ssh-keygen -t ed25519 -C "my-laptop"
ssh-copy-id dev@your-mac
在 Windows 上,请手动把 .pub 文件内容追加到 Mac 上的 ~/.ssh/authorized_keys。确认密钥登录可用后,关闭密码登录。macOS 会读取 /etc/ssh/sshd_config.d/ 中的附加配置,而 sshd 对同一选项以最先读到的值为准,所以文件名要排在前面:
sudo tee /etc/ssh/sshd_config.d/010-hardening.conf <<'EOF'
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
EOF
sudo sshd -t
sshd -t 会检查配置,没有输出即表示有效。用 sudo sshd -T | grep -i authentication 确认设置已生效,并检查 /etc/ssh/sshd_config 中仍有 Include /etc/ssh/sshd_config.d/* 这一行。关闭旧会话前,先新开一个 SSH 会话确认密钥登录正常。
3. 防火墙
开启 macOS 应用防火墙和隐身模式,让 Mac 不响应 ping 和对未开放端口的探测:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on
/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
不要开启“阻止所有传入连接”,它会挡住共享服务,包括你用来连接 Mac 的那些。Ollama、仪表盘、agent 界面等服务请绑定在 127.0.0.1,通过 SSH 隧道访问,而不是直接开放到公网。
4. 电源:永不睡眠,断电后自动重启
会睡眠的服务器就是连不上的服务器。把系统、硬盘和显示器都设为永不睡眠,并开启断电后自动启动和网络唤醒:
sudo pmset -a sleep 0 disksleep 0 displaysleep 0
sudo pmset -a autorestart 1 womp 1
pmset -g
pmset -g 会显示当前生效的设置。系统设置 > 能源 中也有对应选项:“显示器关闭时防止自动进入睡眠”“唤醒以供网络访问”和“断电后自动启动”。你还可以让 macOS 在系统死机后自动重启:
sudo systemsetup -setrestartfreeze on
在较新的 macOS 上,systemsetup 可能提示需要“完全磁盘访问权限”。可以在“隐私与安全性”中给终端授权,或者跳过这一步。
5. 远程登录与屏幕共享
两者都在 系统设置 > 通用 > 共享 中。“远程登录”提供 SSH 和 SFTP,“屏幕共享”提供基于 VNC 的桌面。只开启需要的服务,并限定到具体用户。如果要从非 Mac 设备使用屏幕共享,请通过 SSH 隧道连接,而不是暴露 5900 端口:
ssh -L 5901:localhost:5900 dev@your-mac
然后让 VNC 客户端连接 localhost:5901。各设备可用的客户端见 如何在任何设备上在线访问 Mac。
6. Homebrew 与工具链
用 brew.sh 上的命令安装 Homebrew,再把它加入 shell:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
把 Brewfile 放进 Git 仓库,用 brew bundle 安装。以后重装这台 Mac 或再加一台时,同一个文件就能装出同样的工具。
7. 备份
远程 Mac 旁边没有你的 USB 硬盘,备份要专门规划:
- 代码和配置放进 Git。Brewfile、dotfiles、launchd 任务和脚本都应该在仓库里。
- Time Machine 备份到网络共享。Time Machine 可以备份到你掌控的 SMB 共享,用
tmutil destinationinfo和tmutil latestbackup检查。 - 文件级备份到对象存储。restic 等工具(
brew install restic)可以把加密、带版本的备份发送到你选择的存储。
至少做一次恢复测试。从没恢复过的备份只是猜测。
关于 FileVault:在无显示器的 Mac 上,开启 FileVault 后重启,可能会停在解锁界面,常用的远程工具还没启动。较新的 macOS 增加了通过 SSH 解锁的方式,但请先确认它在你的环境中如何表现,并在开启前联系我们。
8. 更新策略
计划外重启是远程 Mac 最大的风险。在 系统设置 > 通用 > 软件更新 中打开“自动更新”,建议:
- 开启:安全响应和系统文件,让紧急修复及时到位。
- 关闭:自动安装 macOS 更新,让重启时间由你决定。
通过 SSH 用 softwareupdate --list 检查更新,再在空闲时段安装。macOS 大版本要等你的工具支持后再升级,尤其是 Xcode,它与特定 macOS 版本绑定。brew update && brew upgrade 也按你自己的节奏执行。
9. 监控
几条内置命令就能回答大部分“机器是否正常”的问题:
uptime
df -h /
memory_pressure
top -l 1 -o mem -n 10
last reboot | head
告警方面,可以加一个 launchd 任务或 cron 条目,每隔几分钟访问一次监控服务的心跳 URL。心跳一停,你会比用户先知道。尤其要关注剩余磁盘空间:Xcode、模拟器运行时和模型文件很快就会占满 256GB SSD。
远程 Mac mini 配置:一页清单
- 修改密码,检查管理员用户。
- 添加 SSH 密钥,然后关闭密码登录。
- 开启防火墙和隐身模式。
- 用 pmset 设置永不睡眠、断电自启和网络唤醒。
- 把远程登录和屏幕共享限定到指定用户。
- 通过 Brewfile 安装 Homebrew 工具。
- 配置并测试一次备份。
- 安全更新开启,macOS 自动安装关闭。
- 加上心跳检测和磁盘空间检查。
接下来让这台 Mac 开始干活:在云端 Mac mini 上做 iOS CI/CD 和 用 Mac mini 搭建 Ollama 服务器 正好从本文结束的地方开始。机型选择见 Mac mini 租用。