这个错误表示你的 SSH 连接无法到达 GitHub 服务器。以下是详细解决方案,按照优先级排序:
首选解决方案:使用 SSH over HTTPS(端口 443)
这是最有效的解决方案,因为许多网络会阻止 22 端口:
# 编辑 SSH 配置文件
nano ~/.ssh/config
添加以下内容:
Host github.com
Hostname ssh.github.com
Port 443
User git
保存后测试连接:
ssh -T git@github.com
如果看到 “You’ve successfully authenticated” 消息,即可正常使用 git push
替代解决方案:切换到 HTTPS
如果 SSH 仍然失败:
# 查看当前远程 URL
git remote -v
# 切换到 HTTPS
git remote set-url origin https://github.com/用户名/仓库名.git
# 然后推送
git push origin master
系统会提示输入 GitHub 用户名和密码(建议使用个人访问令牌代替密码)
完整排查步骤:
检查网络连接:
ping github.com telnet github.com 22 # 或使用 nc -zv github.com 22
如果无法连接,尝试:
- 关闭 VPN/防火墙
- 切换网络(如手机热点)
- 等待网络恢复
验证 SSH 配置:
# 检查密钥是否加载 ssh-add -l # 如果没有密钥,添加默认密钥 ssh-add ~/.ssh/id_rsa # 或你的密钥文件
更新 known_hosts:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
测试详细连接:
ssh -Tv git@github.com
查看输出中 “Connection refused” 出现的具体位置
高级解决方案:
使用代理(如果处于受限网络):
# 在 ~/.ssh/config 添加 Host github.com ProxyCommand nc -X connect -x 代理IP:端口 %h %p
更新 Git 和 SSH:
# macOS brew upgrade git openssh # Windows git update-git-for-windows
创建新仓库测试:
mkdir test-repo && cd test-repo git init touch test.txt git add . && git commit -m "test" git remote add origin git@github.com:用户名/test-repo.git git push -u origin master
临时解决方案:
# 使用 git 内置的 HTTPS 端口回退
git config --global url."https://github.com/".insteadOf git@github.com:
git config --global url."https://".insteadOf git://
重要提示:如果使用企业网络/校园网,可能需要联系网络管理员开放 22 或 9418 端口。GitHub 状态可查看 https://www.githubstatus.com
完成这些步骤后,应该能成功推送代码。如果问题仍然存在,请提供 ssh -Tv git@github.com
的输出结果以便进一步分析。