【2025 完美解决】Failed connect to github.com:443; Connection timed out
文章目录
- 前言
- 1. 生成并上传 SSH Key
- 2. 写 SSH 配置,强制走 ssh.github.com:443
- 3. 连通性自检(看是否能握手成功)
- 4. 克隆
- 5. 验证
前言
今天和往常一样,写完代码,准备 push
到 github
仓库中,结果发现一直卡在 push
页面的,如下所示:
[edison@vm-centos:~/edison]$ git push
^C
后面排查了各种原因,发现原来是:
GitHub 的 443/TCP 建连超时(curl、telnet 都卡住)
然后查找了网上所有的解决方法,大多数给的方法是:重新设置代理,或者关闭代码,或者去服务器官网开放 443 端口之类的…
但是我都试过了,还是不行,所以我这里推荐:改走 SSH over 443,该方法不依赖国内镜像,也不需要本机代理,成功率高。
1. 生成并上传 SSH Key
命令如下:
ssh-keygen -t ed25519 -C "your_email@example.com"cat ~/.ssh/id_ed25519.pub
注意:ed25519
是一种 SSH 公钥算法,GitHub 官方文档推荐优先使用 Ed25519。
如下所示:
把公钥粘到 GitHub
→ Settings
→ SSH and GPG keys
,然后选择添加 SSH keys
2. 写 SSH 配置,强制走 ssh.github.com:443
命令如下:
mkdir -p ~/.sshchmod 700 ~/.sshcat > ~/.ssh/config <<'EOF'
Host github.comHostName ssh.github.comPort 443User gitIdentityFile ~/.ssh/id_ed25519ServerAliveInterval 30ServerAliveCountMax 6
EOFchmod 600 ~/.ssh/config
如下所示:
3. 连通性自检(看是否能握手成功)
命令如下:
ssh -T git@github.com # 首次会提示 host key,输入 yes
若看到 “Hi <username>! You've successfully authenticated…”
,说明通了。
如果第 3 步卡住:
- 先确认没有残留代理:
env | grep -i proxy
(有就unset
)。
unset http_proxy https_proxy all_proxy
git config --global --unset http.proxy
git config --global --unset https.proxy
- 测试 TCP:
timeout 5 bash -c 'cat < /dev/null > /dev/tcp/ssh.github.com/443' && echo OK || echo FAIL
- 输出
OK
表示 443 到ssh.github.com
通,继续按下步骤操作。
4. 克隆
走 SSH 方式
git clone git@github.com:youername/yourRepository.git
克隆成功
5. 验证
此时我们在 git push
,可以看到已经完美解决了