使用SSH推送至GitHub时出现连接超时错误的原因及解决方法
SSH连接GitHub端口22超时的排查与解决方法
可能的原因
- 本地防火墙、杀毒软件拦截了SSH(22端口)的出站请求
- 所在网络(公司内网、校园网等)的网关或运营商限制了22端口的访问
- 本地SSH配置存在代理冲突,或未针对GitHub做适配
解决方法
1. 切换到GitHub的443端口SSH地址
这是最常用的绕过22端口限制的方法,操作步骤:
- 先查看当前远程仓库地址:
git remote -v - 将远程地址替换为443端口的SSH格式:
git remote set-url origin git@ssh.github.com:443/你的用户名/你的仓库名.git - 执行
git push测试,443端口是HTTPS默认端口,基本不会被网络拦截
2. 排查本地防火墙/安全软件
- 临时关闭Windows防火墙或第三方杀毒软件的防护功能,重新执行
git push - 如果测试成功,需要在防火墙规则中添加允许Git或OpenSSH客户端出站的规则,避免后续再次拦截
3. 配置SSH代理(针对需要代理上网的场景)
如果你的网络需要通过代理访问外网,编辑SSH配置文件:
- Windows下路径:
C:\Users\你的用户名\.ssh\config(文件不存在则新建) - 添加对应代理配置:
- HTTP代理:
Host github.com ProxyCommand connect -H 代理地址:端口 %h %p - SOCKS5代理:
Host github.com ProxyCommand connect -S 代理地址:端口 %h %p
- HTTP代理:
4. 测试SSH连通性
通过以下命令定位问题:
- 测试22端口连通性:
ssh -T git@github.com - 测试443端口连通性:
ssh -T -p 443 git@ssh.github.com
如果443端口能连通,说明22端口确实被限制,直接用方法1即可解决。
内容的提问来源于stack exchange,提问作者Rishi Tiwari




