【🚀🚀】Github 仓库连接异常处理

背景

bash 复制代码
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

众所周知 Github 的网页端访问极其不稳定, 用 http 协议 clone 仓库的时候非常难受, 但是用公钥走 ssh 协议进行连接体感稳定很多.

但是最近 ssh 也不行了, 稳定连接超时, 本地一堆仓库都没办法进行推送。

网上搜了一大圈, 发现都是加 ssh 配置, 增加下面的内容:

bash 复制代码
Host github.com
  Hostname ssh.github.com   Port 443 

意思是原先的 22 端口被关了, 换个 443 的端口就好了。

这么试了之后确实好了, 但是总感觉哪里不对劲, 因为我的印象里, 在指定 Hostname 的情况下, Host 的作用是别名。

也就是说这个配置项的作用其实是将所有连接到 github.com 的换到了 ssh.github.com

然后我把 Port 443 给注释了, 结果发现也能跑通, 这说明和端口压根没啥关系, 纯粹是域名的问题。

分别 ping 一下两个域名, 可以发现 github.com 完全不通, 但是 ssh.github.com 是通的。

bash 复制代码
ping github.com

正在 Ping github.com [20.205.243.166] 具有 32 字节的数据:
请求超时。
请求超时。
bash 复制代码
ping ssh.github.com

正在 Ping ssh.github.com [20.205.243.160] 具有 32 字节的数据:
来自 20.205.243.160 的回复: 字节=32 时间=87ms TTL=114
来自 20.205.243.160 的回复: 字节=32 时间=87ms TTL=114
来自 20.205.243.160 的回复: 字节=32 时间=86ms TTL=114

20.205.243.160 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 86ms,最长 = 87ms,平均 = 86ms

至此, 可以确定就是最近解析的主域名 github.com 的 IP 被彻底被关了, 但是供 ssh 连接的子域名 ssh.github.com IP 还能用。

方案

因此, 解决方案就是添加下面的配置:

bash 复制代码
Host github.com  
  Hostname 20.205.243.160

将现有的 github.com 主机名换一个可以用的 IP。

另外, 找到了 Github 官方的文档 Using SSH over the HTTPS port.

这里面教你如何在 22 端口不可用时, 转用 443 端口, 但是 443 端口必须使用 ssh.github.com. 这也是网上大部分教程的出处. 但是由于这个问题不是端口导致的, 因此方法有效只是巧合罢了。

最后, Github 官方提供了它们的服务 IP 范围, About GitHub's IP addresses**, 从里面可以找一个 ssh 连接成功, 然后写到配置里。

相关推荐
Elastic 中国社区官方博客22 分钟前
用 Elasticsearch 构建一个 ChatGPT connector 来查询 GitHub issues
大数据·人工智能·elasticsearch·搜索引擎·chatgpt·github·全文检索
用户3458482850539 分钟前
除了使用dict.fromkeys()和OrderedDict.fromkeys(),还有哪些方法可以实现列表去重?
github
摇滚侠1 小时前
零基础小白自学 Git_Github 教程,git 命令行操作1,笔记18
笔记·git·github
无限进步_2 小时前
C++从入门到类和对象完全指南
开发语言·c++·windows·git·后端·github·visual studio
itwangyang5202 小时前
在 GitHub 上生成和配置个人访问令牌(PAT),并将其用于 R 环境中的凭证管理和包安装。
开发语言·r语言·github
love530love2 小时前
【ComfyUI/SD环境管理指南(二)】:如何避免插件安装导致的环境崩溃与“外科手术式”修复
人工智能·windows·python·stable diffusion·github·aigc·comfyui
Jonathan Star3 小时前
Git 的 pre-commit hook(以及其他钩子脚本)默认不会被 git commit 追踪,也不会被 git push 推送到远程仓库
github
无限进步_4 小时前
C++初始化列表详解:语法、规则与最佳实践
java·开发语言·数据库·c++·git·github·visual studio
无限进步_4 小时前
C++运算符重载完全指南:从基础到实战应用
开发语言·数据库·c++·windows·git·github·visual studio
逛逛GitHub4 小时前
盘点 近期优秀的 GitHub 开源项目。
github