从没用过 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 模式