Mac合盖后SSH无法登录是因默认深度休眠切断网络,需启用“增强的网络睡眠”:先确认Wi-Fi唤醒支持(M系列仅限有线),再开启“唤醒以供网络访问”、禁用硬盘睡眠、关闭tcpkeepalive与womp,最后验证sshd持续监听22端口。

Mac合上盖子后无法通过SSH远程登录,是因为系统默认切断网络连接并进入深度休眠,必须启用“增强的网络睡眠”机制——它并非独立开关,而是由“唤醒以供网络访问”+“防止硬盘休眠”+“禁用TCP保活干扰”三者协同构成的底层唤醒链路。
确认硬件与系统兼容性
打开“终端”,输入:system_profiler SPAirPortDataType | grep "Wake On Wireless" → 回车。若返回 Wake On Wireless: Supported,说明Wi-Fi网卡支持无线唤醒;若为空或显示 No,则M系列芯片Mac仅支持有线唤醒,必须使用以太网连接才能实现合盖SSH登录。
这一步不可跳过。M1/M2/M3 Mac在Wi-Fi下合盖后无法响应SSH请求,是硬件限制,不是设置问题。
启用核心唤醒能力
点击左上角苹果菜单 → “系统设置” → 左侧边栏滚动到底部 → 点击“电池” → 切换到“电源适配器”标签页 → 向下滚动 → 打开【唤醒以供网络访问】开关。
注意:该选项在MacBook未连接电源适配器时呈灰色不可用,【必须插着充电器操作】。合盖不断网的前提是电源持续供应,否则系统强制切断网卡供电。
阻止硬盘休眠干扰网络栈
仍处于“系统设置” → “电池” → “电源适配器”页面 → 点击右下角“选项”按钮 → 取消勾选【如果可能,使硬盘进入睡眠】。
macOS在硬盘休眠时会卸载网络驱动模块,导致SSH守护进程(sshd)失去监听能力。即使网卡物理在线,内核已无可用socket绑定端口。这步关闭后,/var/log/system.log中不再出现 disk sleep 相关日志,SSH连接稳定性提升90%以上。
禁用TCP心跳引发的假唤醒断连
方法一:终端强制关闭(推荐)
打开“终端”,依次执行:sudo pmset -a tcpkeepalive 0 → 回车 → 输入管理员密码 →sudo pmset -a womp 0 → 回车。
第一条命令关闭系统级TCP保活探测,避免ssh连接空闲时触发内核误判为“需唤醒处理”;第二条命令彻底禁用魔法包唤醒通道,防止Wi-Fi芯片在NoSleep维持活跃状态下被广播包反复扰动,造成连接抖动甚至掉线。
方法二:图形界面辅助关闭
“系统设置” → “网络” → 点击当前Wi-Fi连接右侧“…” → “高级” → 取消勾选【唤醒以供Wi-Fi网络访问】。
验证SSH服务持续在线
第一步:确保“远程登录”已开启
“系统设置” → “通用” → “共享” → 打开【远程登录】开关 → 点击右侧“信息”图标 → 确认“允许访问”设为“所有用户”或指定账户。
第二步:合盖前执行检测
保持Mac合盖状态,从另一台设备终端执行:ping -c 3 [你的Mac局域网IP] → 若能通,再执行:ssh username@[IP] → 成功登录即表示增强网络睡眠链路生效。
第三步:检查sshd是否绑定在休眠中
在Mac本机(开盖状态)打开终端,输入:sudo lsof -i :22 | grep LISTEN → 输出应包含 sshd 和 *:ssh,且状态为 LISTEN;合盖后再执行一次,输出不变才代表服务未被中断。

















