Apple 设备管理的第一步是将设备接入到 Jamf Pro,再由 Jamf Pro 去下发管控的任务,例如执行应用安装、系统更新、远程锁定、远程擦除等。但是所有这些任务都是基于设备处于被管控的状态,一旦出现任务下发失败或任务一直处于等待中的情况,那么客户端可以已经脱离了管控,当然也不排除客户端处于离线状态。以下是常见的异常现象:
- 通过 Jamf Pro 下发远程命令不生效。
- 通过 Jamf Pro 或 Self Service 去部署来自 App Store 的应用不成功。
- 打开 Self Service 报错或在 Self Service 内执行的软件包安装任务失败。
- 配置描述文件(Configuration Profile)新建或修改后,客户端上没有生效。
- 安装软件、执行脚本、更新 Inventory 的 Policy 任务没有在客户端上被执行。
那么,我们遇到此类情况如何去对客户端的管控状态做出判断呢?这是比较推荐的判断流程:
第一步、确认此时客户端是正常联网的,并且可以与 Jamf Pro 服务器和 Apple 消息推送服务(APNs)正常通信。
1、macOS 客户端可以打开 jamf pro 服务器的网址或其他网站,并执行命令以判断与APNs通信是否正常。
nc -vz api.push.apple.com 443
nc -vz api.push.apple.com 2197
2、iOS 客户端可以打开 jamf pro 服务器的网址或其他网站,确认联网正常。
3、可尝试重启 macOS 或 iOS 客户端。
第二步、在 Jamf Pro 中确认设备的在线状态。
1、macOS 客户端可以查询 last check-in、last Inventory update、last enrollment、MDM Profile Expiration Date 时间,确认是否有异常。
last check-in 频率比较高,设备在线状态下默认是15-20分钟左右一次,此频率可以在 Jamf Pro Settings > Computer Management > Check-In 设置中调整。
last Inventory update 默认是一周一次,频率可以前往 Computers > Policies > Inventory Update 调整。
MDM Profile Expiration Date 默认是 Last Enrollment 时间加2年,即 MDM 客户端证书有效期。如果此证书没能及时更新导致过期,那么客户端将无法与 APNs 通信,所有基于 APNs 的 远程命令、Profile 下发、App Store App 推送等都将无法成功执行。
2、iOS 客户端可以查看 last Inventory update、last enrollment、MDM Profile Expiration Date 时间。
last Inventory update 默认是最高频率每天一次。
MDM Profile Expiration Date 情况同 macOS 客户端。
从以上这些时间信息基本可以判断设备状态是否异常。例如:已确认设备此时在线情况下,last check-in 时间已超过了3周,或是 last Inventory update 时间已超过了2个月,或是 MDM Profile Expiration Date 已过期,这些都可以说明设备基本上是处于已经脱离管控的状态。
第三步、在客户端中进一步确认设备管控状态。
1、Jamf 管理 macOS 客户端基于 Jamf Agent 和 Apple MDM 管理框架,所以可以从这两方面入手。
1.1 确认 Jamf Agent
1.1.1 确认 Jamf Agent 是否存在,可执行终端命令:jamf help
如果遇到 command not found: jamf 报错,说明 jamf binary 没能成功安装或已被删除,如下图。
如果可以返回 jamf binary 使用说明,则说明其已成功安装,如下图。
1.1.2 确认 Jamf Daemon 是否运行。
执行终端命令:sudo launchctl | grep com.jamf.management.daemon
如果没有运行,则执行以下命令加载:
sudo launchctl load -w /Library/LaunchDaemon/com.jamf.management.daemon.plist
1.1.3 确认 jamf binary 可用之后继续执行其他如下检查命令。
检查与 Jamf Pro Server 的通信:jamf checkjssconnection
更新 Jamf 管理框架:sudo jamf manage
更新客户端 Inventory 资产信息:sudo jamf recon
检查待执行策略:sudo jamf policy
1.1.4 查看 /var/log/jamf.log 日志或打开 Console.app 查看 jamf.log,尝试从中查找异常情况。
1.2 确认 MDM 客户端设备身份证书
MDM 客户端设备身份证书是在设备注册到 MDM 服务器时通过在注册配置文件中嵌入PKCS#12配置文件有效负载来完成的,这将成为设备的身份证明。如果钥匙串中此设备身份证书不存在或和 Jamf Pro 中不一致,则可能是由于设备执行过迁移助理或证书删除操作,这将导致所有基于 APNs 推送的任务都会失败或一直处于 pending 状态,如远程命令、profile 推送更新、app store 应用安装等。
1.2.1 打开钥匙串 keychain.app, 前往 系统 > 我的证书,确认客户端身份证书是否存在并仍然处于有效期内,且和 Jamf Pro 中此设备 Inventory 中的证书名称和有效期一致。
2、Jamf 管理 iOS 客户端完全基于 Apple MDM 管理框架,可以从这几个方面入手。
2.1 查询 MDM 描述文件是否存在。设置 > 通用 > VPN 与设备管理 > 移动设备管理 > MDM Profile.
2.2 确认 MDM 描述文件内的 APNs 证书主题是否和 Jamf Pro 中的一致。设置 > 通用 > VPN 与设备管理 > 移动设备管理 > MDM Profile > 移动设备管理 > Jamf xxx Enrollment Payload: MDM > 主题。
Jamf Pro Settings > Global > Push Certificate > MDM Push Notification Certificate
2.3 确认设备身份证书是否和 Jamf Pro 中的证书一致。
设置 > 通用 > VPN 与设备管理 > 移动设备管理 > MDM Profile > SCEP 设备身份证书
Jamf Pro > Devices > Search Inventory > “Device Name” > Inventory > Certificate.
通过排查 Jamf Pro 服务端和客户端相关日志、信息、证书等,如出现如上异常情况,重新注册设备是最好最快的解决办法。
希望能够对 Jamf Pro 管理员处理设备脱管问题上有所帮助。
如有疑问,请与我们联系或发送工单邮件至 help@solutionkeys.com.