GitHub推送又超时了?试试SSH

用 SSH 彻底解决 GitHub 克隆/推送超时问题

每次使用本地ide连接GitHub时候,总是会超时,或者其它原因连不上,真的让人体验很差,天下苦秦久矣,今天用SSH来解决这个问题

在国内或网络环境复杂的地区,使用 GitHub 时经常遇到 HTTPS 超时 (如 Error in the HTTP2 framing layer)或 SSH 超时ssh: connect to host github.com port 22: Operation timed out)。

这些问题主要源于网络对端口 22 的限制、HTTP/2 兼容性问题或运营商干扰。切换到 SSH 并结合端口 443 是目前最稳定、最有效的解决方案。

SSH 不仅更安全,还能避免反复输入 Token,一次配置,长期受益。本文提供 Windows 和 macOS 完整的通用配置方法。

为什么推荐 SSH + 端口 443?
  • 避开端口 22 被封锁的问题而且几乎所有网络都允许 443 端口
  • 不再需要每次输入用户名/密码或 Personal Access Token
  • 连接更稳定,适合大仓库克隆和频繁 push/pull
  • 适用于 PyCharm、VS Code、IntelliJ 等 IDE
第一步:生成 SSH 密钥

打开终端:

bash 复制代码
ssh-keygen -t ed25519 -C "你的邮箱@example.com"

pub是公钥

第二步:将公钥添加到 GitHub
  1. 登录 GitHub → 右上角头像 → SettingsSSH and GPG keysNew SSH key

  2. 把复制的公钥粘贴到 Key 框中,点击 Add SSH key

第三步:配置 SSH

创建或编辑 ~/.ssh/config 文件

打开 config 文件

  • macOS:open -e ~/.ssh/config
  • Windows:notepad ~/.ssh/config 或用 VS Code 编辑

在文件中添加以下内容:

config 复制代码
Host github.com
  Hostname ssh.github.com
  Port 443
  User git
  IdentityFile ~/.ssh/id_ed25519
  ServerAliveInterval 60      # 保持连接活跃,防止超时
  ServerAliveCountMax 5
  TCPKeepAlive yes

说明
Hostname ssh.github.com + Port 443 是绕过端口 22 超时的核心配置。GitHub 官方推荐此方式。

保存后,添加密钥到 ssh-agent:

  • macOS

    bash 复制代码
    eval "$(ssh-agent -s)"
    ssh-add --apple-use-keychain ~/.ssh/id_ed25519
  • Windows

    bash 复制代码
    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_ed25519
第四步:测试连接

在终端运行:

bash 复制代码
ssh -T git@github.com

成功会显示:

现在就不用担心连接超时的问题了!

相关推荐
ZaferLiu7 小时前
当Agent需要动手干活:Tool还是MCP?
github
鹏毓网络科技2 天前
Cursor Rules 文件配置实战:3 个隐藏参数让我每月少写 40% 样板代码
前端·github
乘云数字DATABUFF2 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
嘻嘻仙人3 天前
Ubuntu中 git上传自己的项目和二次上传一般流程
git·github
白鲸开源3 天前
Apache SeaTunnel Zeta Engine 的 Basic Auth 是怎么工作的?
java·vue.js·github
白鲸开源3 天前
一文读懂DolphinScheduler插件机制:如何轻松扩展任务类型与数据源
java·架构·github
徐小夕4 天前
万字拆解 JitWord:企业级实时协同文档底层架构 + 大模型 AI 融合完整实践
前端·vue.js·github
码流怪侠4 天前
【GitHub】Ponytail:给 AI 编码代理植入“懒人资深开发者“灵魂的开源插件深度拆解
程序员·github·ai编程
齐翊4 天前
怎么确认 AI 看懂了你的提示词?
人工智能·github·ai编程
Web3探索者4 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh