Git推送遇双重问题:HTTP认证失败、SSH操作卡顿求助
代码推送问题解决方案
HTTP协议认证失败解决
GitHub在2021年8月13日已移除密码认证支持,因此使用密码推送会触发认证失败,可按以下方式解决:
- 生成个人访问令牌(PAT):在GitHub账户设置中创建PAT,勾选
repo权限(确保拥有仓库读写权限)。 - 用PAT替代密码:执行
git push时,用户名填写GitHub账号名,密码填写生成的PAT即可。 - 永久存储凭证:通过Git凭证助手保存PAT,避免重复输入:
完成一次git config --global credential.helper storegit push并输入PAT后,后续操作会自动读取存储的凭证。
SSH协议卡住问题排查
即便确认密钥配置无误,仍可通过以下步骤定位问题:
- 验证SSH连通性
执行命令测试本地与GitHub的SSH连接状态:
若输出ssh -T git@github.comHi [你的用户名]! You've successfully authenticated, but GitHub does not provide shell access.说明认证正常;若卡住或报错,继续排查。 - 检查SSH密钥加载情况
确保ssh-agent处于运行状态且已加载密钥:# 启动ssh-agent eval "$(ssh-agent -s)" # 添加默认路径的密钥(若密钥路径不同需修改) ssh-add ~/.ssh/id_rsa - 确认远程仓库地址格式
执行命令检查并修正远程仓库地址为SSH格式:git remote -v # 若地址错误,执行以下命令修正 git remote set-url origin git@github.com:SanskarGithub07/BASED.git - 网络与代理排查
- 关闭本地代理或VPN,重新执行
git push尝试。 - 若网络屏蔽22端口,修改SSH配置使用443端口:
在~/.ssh/config文件中添加:Host github.com Hostname ssh.github.com Port 443
- 关闭本地代理或VPN,重新执行
- 启用SSH调试日志
执行带调试信息的推送命令,定位卡住环节:
通过输出日志分析连接中断或卡住的具体原因。GIT_SSH_COMMAND="ssh -v" git push --verbose
内容的提问来源于stack exchange,提问作者Rachit Anand
相关产品推荐
相关产品推荐

