为何Windows端Git仍可密码认证推送,Linux端却失败?
GitHub跨系统认证差异问题解答
核心原因是Windows端的Git悄悄替你做了认证转换,你以为用的是密码登录,实际走的是GitHub支持的个人访问令牌(PAT)认证流程:
- Windows版Git从新版本(比如你用的2.48.1)开始默认集成了Git Credential Manager(GCM),当你输入账号密码时,GCM会自动识别GitHub的密码认证已失效,后台自动生成或关联PAT完成认证,你全程感知不到这个转换,只觉得输密码就成功了。
- Ubuntu端的Git(2.43.0)默认没有启用GCM,你直接输入密码的话,GitHub服务器会直接拒绝这种已废弃的认证方式,所以弹出密码认证移除的错误。
- 你检查的.gitconfig如果只是常规配置,不会涉及凭据管理器的差异,这就是两边行为不同的关键——Windows端有GCM在后台处理认证逻辑,Linux端没有。
你可以验证一下:打开Windows的「凭据管理器」(控制面板→用户账户→凭据管理器→Windows凭据),找到GitHub相关的存储条目,里面保存的应该是PAT,而不是你最初输入的密码。
内容的提问来源于stack exchange,提问作者anxzuus
相关产品推荐
相关产品推荐

