GitHub Copilot SSL认证失败?校准系统时间一招解决
先说结论:当 GitHub Copilot 登录时弹出“System clock out of sync”提示,根本原因在于本地系统时间与网络标准时间的偏差超过5分钟。一旦时间漂移超标,OAuth 令牌的签名校验以及 SSL 证书的有效性验证都会失败,认证流程自然被阻断。
问题看似不大,但处理不当确实令人头疼。下面按操作系统分步骤给出具体修复方法。
先确认时间偏差有多大
别急着动手,先做一步确认。打开终端(macOS/Linux)或命令提示符(Windows),执行下面这条命令:
curl -v https://copilot-proxy.githubusercontent.com/_ping 2>&1 | grep "date|time"
重点查看响应头中的 Date 字段。将其与系统托盘显示的时间进行对比。如果差值超过5分钟——例如服务器返回“Wed, 28 May 2026 09:35:12 GMT”,而本地已跳到09:42——那么这就是根本原因。
Windows 系统强制同步时间
第一步:右键任务栏右下角的时间 → 选“调整日期和时间” → 确保“自动设置时间”和“自动设置时区”均为开启状态。
第二步:直接点击“立即同步”按钮。等待状态栏出现绿色提示“同步完成”。若同步失败,说明默认的 time.windows.com 不可达,需要更换 NTP 源。
第三步:以管理员身份打开 PowerShell,依次执行以下三条命令:
w32tm /config /manualpeerlist:"ntp.ntsc.ac.cn" /syncfromflags:manual /reliable:yes /update
w32tm /resync
w32tm /query /status | findstr "上次成功同步时间"
注意:如果最后一条命令返回空值或报错“拒绝访问”,先执行 net stop w32time 再 net start w32time 重启时间服务,然后再次尝试同步。
macOS 系统校准时间
方法一:图形界面快速搞定
打开“系统设置” → “通用” → “日期与时间” → 先关闭“自动设置日期与时间”,再立刻重新打开。此操作会强制触发一次 NTP 时间拉取,多数情况下即可解决问题。
方法二:终端精准同步(更推荐)
执行 sudo sntp -sS time.apple.com。这条命令直接向苹果授时服务器发起单次同步,绕过了系统守护进程的缓存。对于虚拟机或从休眠唤醒后时间偏移严重的场景,这个方法效果更好。
方法三:虚拟机用户的特别步骤(仅限VMware/VirtualBox)
在虚拟机设置中,关闭“同步客户机时间”选项。否则宿主机时间修正后,虚拟机会在几秒内又被强制拉回旧时间,导致 Copilot 反复报错——这个坑踩过的人应该不少。
确认 Copilot 认证是否恢复
重启 PyCharm 或 VS Code,进入 Copilot 登录界面,点击“Sign in with GitHub”。
如果弹窗正常跳转到浏览器,且能顺利加载 github.com/login/oauth/authorize 页面,并完成授权回调——说明时间问题已排除,修复成功。
如果仍卡在“Loading…”状态,或返回“invalid state”错误,则需要检查 IDE 内置浏览器的兼容性。对于 JetBrains 系 IDE,执行以下操作:
Help → Find Action → 输入“registry” → 找到 ide.browser.jcef.enabled → 取消勾选 → 重启 IDE。
这一步关闭的是 JCEF 组件,某些登录流程中它处理不够稳定,换成系统默认浏览器反而更顺畅。
