飘在云端

东西南北,海角天涯

· 备查 · · 160次浏览

GitHub desktop authentication failed

从没用过 GitHub Desktop 桌面 GUI 客户端
今天帮人解决 Fetch 报错:

GitHub desktop authentication failed ......

后面罗列了一大堆可能问题

检查没问题,不是字面意义上的认证失败问题

先给出几个在国内使用时才会有的特殊原因

  • 梯子服务器端为了防止滥用/爆破/攻击等安全原因,屏蔽了 22 端口,然后使用了 ssh 认证去使用 git
  • 你以为你设置了代理,其实某些组件并没有走代理,典型的是一大串移植 Linux 环境的 bin/xxx 命令目录下面一大堆 xxx.exe 文件,点名 ssh.exe

本文中都全命中了,下面正文开始


排查自身问题,已经科学,并 %userprofile%\.gitconfig文件设置了代理

[http]

proxy = socks5://127.0.0.1:7890

[https]

proxy = socks5://127.0.0.1:7890

使用命令行 Bash clone 项目时能看到有流量经过代理

Clash 配置了系统代理,并同时监听了本机 7890 7891 端口提供混合代理服务(http/https/socks5)

clash 切换日志等级到提示,并在日志界面切换子项的日志等级都为 2 个 调试

再次 pull,搜索 github 关键字,能看到简单的几次 github 请求,但是似乎偏少,此时还没怀疑没走代理,因为知道他配置了 ssh 认证使用 git

怀疑是机场屏蔽了 22 端口,遍历所有节点甚至切换一些月抛机场,都是这样,此时只能怀疑没走代理了

简单粗暴直接开启 Tun 模式,再次 Fetch 发现多了好几个 github 子域名,请求也多了起来,果然没有使用到 git 配置的代理设置,而是本地直连

并且本地系统测试,发现开始 GitHub Desktop 首次登录的浏览器 OAuth 认证都过不去,检查 GitHub Desktop 日志,发现 2024-01-30T01:35:24.689Z - warn: [ui] requestOAuthToken: failed with endpoint https://api.github.com 报错

请输入图片描述

也是直接忽略了 .gitconfig 设置的代理,直连了 api.github.com 域名

Git Bash 执行:ssh -T git@github.com
长时间连接中,并且 Clash 日志没有请求连接记录,GitHub Desktop → Help → Show logs in Explorer
日志显示连接 22 端口 timeout

最终解决方案,开启 Tun 模式

评论 (0条)