外观
SSH 连接 GitHub 22 端口失败?改用 443 端口
用 SSH 方式 git clone / push 时报这类错:
text
ssh: connect to host github.com port 22: Connection timed out原因通常是 22 端口被网络封锁。GitHub 官方提供了一个后备通道:通过 443 端口走 SSH。配置一次即可长期使用,比配代理简单得多。
一、先验证 443 端口能否连通
bash
ssh -T -p 443 git@ssh.github.com如果返回:
text
Hi username! You've successfully authenticated, but GitHub does not provide shell access.说明 443 通道可用,继续配置。
二、配置 SSH 走 443(一劳永逸)
编辑 SSH 配置文件:
- Windows:
C:\Users\你的用户名\.ssh\config - macOS / Linux:
~/.ssh/config
加入:
text
Host github.com
Hostname ssh.github.com
Port 443
User git保存后,像平常一样用 SSH 地址即可,无需改仓库地址:
bash
git clone git@github.com:user/repo.git验证:
bash
ssh -T git@github.com
# 出现 "Hi username!" 即成功三、没有 SSH key?先生成并添加
如果你还没配过 SSH key:
bash
# 1. 生成密钥(一路回车即可)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 2. 查看公钥内容
cat ~/.ssh/id_ed25519.pubWindows PowerShell 查看公钥:
powershell
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub然后把公钥内容添加到 GitHub:Settings → SSH and GPG keys → New SSH key。
四、还是连不上?
- 确认走的是 SSH 而非 HTTPS:
git remote -v看地址是git@开头还是https://。HTTPS 卡住的话看 git clone 加速。 - 443 也被干扰:少数网络下 443 SSH 也不通,改走 代理 或改用 HTTPS + 代理。
- 权限报错
Permission denied (publickey):是 key 没加对,重做第三步。
HTTPS vs SSH 走 443 对比
| 方式 | 端口 | 适合 |
|---|---|---|
| HTTPS 直连 | 443 | 只读、偶尔用 |
| HTTPS + 代理 | 443 | 全场景,但需代理 |
| SSH 走 22 | 22 | 常被封,不推荐 |
| SSH 走 443 | 443 | 需频繁 push、不想配代理(推荐) |
小结
- 22 端口不通,首选把 SSH 改到 443 端口,配置一次长期有效。
- 这是 GitHub 官方支持的通道,稳定且合规。
- 443 也不通时,再叠加 代理。
本文仅供技术学习与研究,请遵守所在国家/地区法律法规。