如果您在 macOS 上使用远程管理或屏幕共享时遇到问题,例如连接停留在“已连接”状态、显示部分加载轮子或需要频繁切换设置才能恢复功能,以下步骤可以帮助您解决可能干扰远程访问的更深层次的系统级问题。
这些高级步骤适用于熟悉终端和系统管理的用户。请谨慎操作,并确保您拥有管理员权限。
本文解决的症状
- 远程管理或屏幕共享间歇性停止响应
- 您可以在 Screens 或 macOS 屏幕共享中看到远程 Mac,但连接冻结或失败
- 重新启动远程管理可以暂时解决问题
- 日志显示类似 screensharingd、凭据无效 或 系统文件丢失 的错误
基本修复
首先关闭远程管理或屏幕共享,然后重新打开。很多情况下,简单的重置就足以解决问题。
您可以在本文 中找到分步说明。
高级修复
1. 重启屏幕共享守护进程
有时 screensharingd 进程会卡住。重启它可以恢复功能,而无需完全重置远程管理。
sudo pkill screensharingd
此命令可以从终端或通过 SSH 运行,服务将自动重启。
2. 重建远程管理服务
重置并重启 macOS 远程管理和屏幕共享的启动守护进程可能会解决隐藏的损坏或停滞状态。
sudo launchctl bootout system /System/Library/LaunchDaemons/com.apple.screensharing.plist
sudo launchctl bootout system /System/Library/LaunchDaemons/com.apple.RemoteManagement.launchd
sudo launchctl bootstrap system /System/Library/LaunchDaemons/com.apple.screensharing.plist
sudo launchctl bootstrap system /System/Library/LaunchDaemons/com.apple.RemoteManagement.launchd
然后重启你的 Mac。
3. 重新创建丢失的系统文件
在某些情况下,日志可能会显示 macOS 缺少关键的系统目录,例如:
/private/var/db/DetachedSignatures
要重新创建此文件夹:
- 启动到 macOS 恢复模式
- 从“实用工具”菜单打开“终端”
- 运行:
csrutil disable reboot
重启后(返回到常规 macOS),打开“终端”并运行:
sudo mkdir -p /private/var/db/DetachedSignatures
sudo chmod 755 /private/var/db/DetachedSignatures
sudo chown root:wheel /private/var/db/DetachedSignatures
创建目录后,您可以根据需要重新启用系统完整性保护 (SIP):
csrutil enable
4. 完全重置远程管理配置
要清除并重新配置远程管理,请执行以下操作:
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \
-deactivate -stop
sudo rm -f /Library/Preferences/com.apple.RemoteManagement.plist
sudo rm -rf /var/db/RemoteManagement
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \
-activate -configure -access -on -restart -agent -privs -all
可选:检查查看器会话过载
如果您的日志显示类似以下消息:
reset gMaxViewerConnection to 13
…这可能意味着系统没有清理旧的VNC 连接正常。您可以使用 pkill 命令(参见步骤 1)定期重置 screensharingd,或考虑通过 launchd 安排重置。
安全模式测试(可选)
排除第三方干扰:
- 重启 Mac
- 立即按住 Shift 键,直到出现登录屏幕
- 登录(您将进入安全模式)
- 启用屏幕共享或远程管理
- 尝试从 Screens 连接
执行这些步骤后
- 您无需再切换远程管理来恢复访问
- 即使长时间正常运行,屏幕共享连接也应该保持稳定
- 如果问题再次出现,请在故障后立即使用以下命令捕获日志:
log show --predicate 'process == "screensharingd"' --last 10m
需要帮助?
如果您在尝试上述步骤后仍然遇到问题,请联系我们并提供您的日志副本以及有关您的 macOS 版本和网络设置的详细信息。