【2025 完美解决】Failed connect to github.com:443; Connection timed out

文章目录

    • 前言
    • [1. 生成并上传 SSH Key](#1. 生成并上传 SSH Key)
    • [2. 写 SSH 配置,强制走 ssh.github.com:443](#2. 写 SSH 配置,强制走 ssh.github.com:443)
    • [3. 连通性自检(看是否能握手成功)](#3. 连通性自检(看是否能握手成功))
    • [4. 克隆](#4. 克隆)
    • [5. 验证](#5. 验证)

前言

今天和往常一样,写完代码,准备 pushgithub 仓库中,结果发现一直卡在 push 页面的,如下所示:

shell 复制代码
[edison@vm-centos:~/edison]$ git push 
^C

后面排查了各种原因,发现原来是:

复制代码
 GitHub 的 443/TCP 建连超时(curl、telnet 都卡住)

然后查找了网上所有的解决方法,大多数给的方法是:重新设置代理,或者关闭代码,或者去服务器官网开放 443 端口之类的...

但是我都试过了,还是不行,所以我这里推荐:改走 SSH over 443,该方法不依赖国内镜像,也不需要本机代理,成功率高。

1. 生成并上传 SSH Key

命令如下:

shell 复制代码
ssh-keygen -t ed25519 -C "your_email@example.com"

cat ~/.ssh/id_ed25519.pub

注意:ed25519 是一种 SSH 公钥算法,GitHub 官方文档推荐优先使用 Ed25519。

如下所示:

把公钥粘到 GitHubSettingsSSH and GPG keys,然后选择添加 SSH keys

2. 写 SSH 配置,强制走 ssh.github.com:443

命令如下:

shell 复制代码
mkdir -p ~/.ssh

chmod 700 ~/.ssh

cat > ~/.ssh/config <<'EOF'
Host github.com
  HostName ssh.github.com
  Port 443
  User git
  IdentityFile ~/.ssh/id_ed25519
  ServerAliveInterval 30
  ServerAliveCountMax 6
EOF

chmod 600 ~/.ssh/config

如下所示:

3. 连通性自检(看是否能握手成功)

命令如下:

shell 复制代码
ssh -T git@github.com    # 首次会提示 host key,输入 yes

若看到 "Hi <username>! You've successfully authenticated...",说明通了。

如果第 3 步卡住:

  • 先确认没有残留代理:env | grep -i proxy(有就 unset)。
shell 复制代码
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 方式

shell 复制代码
git clone git@github.com:youername/yourRepository.git

克隆成功

5. 验证

此时我们在 git push,可以看到已经完美解决了