Git HTTPS推送问题:认证失败及相关技术疑问
GitHub HTTPS Push认证失败相关问题解答
错误信息
remote: Support for password authentication was removed on August 13, 2021.
remote: 请查看GitHub官方文档了解当前推荐的认证方式
fatal: Authentication failed for 'https://github.com/pavelkomarov/repo.git/'
疑问解答
疑问一:Git客户端为何先要求输入用户名和密码,随后却提示不再接受该认证方式?
Git客户端不会提前知晓GitHub的认证规则变更,它只是遵循HTTPS协议的常规流程发起认证请求。只有当GitHub服务器接收到用户名密码后,才会返回“已取消密码认证”的错误提示,所以会出现先要求输入凭据再报错的情况。
疑问二:是否仍可通过HTTPS执行推送操作?目前仅能通过SSH成功推送,是否需在Git配置中添加密钥?
可以继续使用HTTPS执行推送,但不能再用用户名+密码的组合,需要改用**个人访问令牌(PAT)**替代密码。不需要配置SSH密钥,SSH是独立于HTTPS的另一种认证方式。如果选择HTTPS,生成PAT后,推送时输入用户名,密码栏填写PAT即可;也可以将PAT存储到Git凭据管理器中,避免重复输入。
疑问三:为何Git默认采用HTTPS协议而非功能更完善的SSH?是否是为避免普通用户配置SSH密钥,但实际上团队成员仍需执行该操作?
Git默认使用HTTPS主要有两个原因:一是兼容性更强,大多数网络环境不会拦截HTTPS的443端口,而SSH的22端口可能被防火墙限制;二是入门门槛更低,新手无需提前配置密钥就能直接克隆仓库。不过当需要推送代码时,无论用HTTPS还是SSH都需要额外配置(HTTPS配PAT,SSH配密钥),团队成员可根据自身习惯选择合适的方式。
SSH推送最简配置步骤
- 生成并复制SSH公钥:执行
cd ~/.ssh && ssh-keygen(一路回车使用默认配置),再执行cat id_rsa.pub | pbcopy(Windows系统替换为type id_rsa.pub | clip)复制公钥内容 - 在GitHub添加公钥:进入个人设置 → SSH和GPG密钥 → 点击“添加SSH密钥”,粘贴公钥内容后保存
- 切换仓库远程地址:执行
git remote set-url origin git@github.com:user-name/repo-name.git,将仓库的远程协议切换为SSH
内容的提问来源于stack exchange,提问作者Pavel Komarov
相关产品推荐
相关产品推荐

