1. 9 种常见卡顿原因

根据 4 年中处理过的 2,300+ 个开发者工单,SSH / Git 卡顿的根因通常集中在以下 9 类。按概率排序:

  1. DNS 解析慢:链路内的递归 DNS 不稳定,首次连接 6 秒白屏。
  2. TCP 重传高:跨海段 MTU 不匹配,中等包 (1400 字节) 被拆分重传。
  3. Git LFS 大对象:每个大文件单独 HTTP,HTTP1.1 串行下载。
  4. 本地 NAT 老化:家用路由器把空闲连接回收,SSH 长连接被掐死。
  5. 密钥协商阻塞:某些代理不支持 SSH RSA-sha1,被迫降级到慢协议。
  6. IPv6 路径破损:网络栈对 IPv6 半合半开,初次握手慢。
  7. VSCode Remote 反向隧道:随机端口被家用网关挡住。
  8. IDE re-index:远程文件系统抖动导致 IDE 频繁重新索引。
  9. 本地 CPU 满载:代理加密占用高,IDE 卡顿被误判为网络。
技巧:用 QuickQ 客户端 → 「链路探针 → 协议优先级」就能一键测出当前链路是哪条有问题,不用抓包。

2. TCP/UDP MTU 调整

出海链路里最重要的一个参数是 MTU。Linux 默认 1500,部分运营商在跨境段只允许 1400。请按以下步骤调整:

  1. 在本地终端运行:ping -s 1400 -M do github.com 测一下不分片的最大 ping 包。
  2. 如果不通,降到 1300,逐档试到能通。
  3. macOS / Linux 调整:sudo ifconfig en0 mtu 1400(en0 替换为实际网卡)。
  4. Windows:netsh interface ipv4 set subinterface "以太网" mtu=1400 store=persistent。

QuickQ 客户端默认会自动按链路调整 MSS(TCP 最大段大小),无需用户手动改。

3. QuickQ 专属代理通道

QuickQ v4.0 内置「开发者模式」,开启后会自动监听本地 4123 (HTTP) 和 4124 (SOCKS5) 端口。开发者只需一次配置就可以把所有流量走 QuickQ:

  1. 客户端 → 设置 → 高级 → 开发者模式 → 打开「TUN 模式 + SOCKS5 监听」。
  2. 客户端生成一份专属的「开发者配置」粘贴版。
  3. 照下面贴到 ~/.ssh/config 或系统代理设置里。
图 3.1 · 开发者模式面板

4. SSH ~/.ssh/config 配置

一份最小可工作的 SSH 配置:

Host github.com
  ProxyCommand nc -X 5 -x 127.0.0.1:4124 %h %p
  ServerAliveInterval 30
  TCPKeepAlive yes
  IPQoS lowdelay throughput

Host gitlab.com
  ProxyCommand nc -X 5 -x 127.0.0.1:4124 %h %p
  ServerAliveInterval 30

Host *
  PasswordAuthentication no
  IdentitiesOnly yes

macOS 用户需先安装 brew install netcat。Windows 可以使用 ncat(nmap 套件)。

5. Git push 大文件

Git LFS push 一段时间经常断流的解决:在仓库目录下新建 .gitconfig:

[http]
  postBuffer = 524288000
  lowSpeedLimit = 1000
  lowSpeedTime = 30
[https]
  postBuffer = 524288000
[lfs]
  transfer = ssh

QuickQ 客户端在检测到 Git LFS 时会自动启用「走专线通道」,把 HTTP/HTTPS 流量切到第二个 socket,避免被 SSH 通道挤压。

6. IDE 远程调试

VSCode Remote 与 JetBrains Gateway 都依赖 SSH 反向隧道。在家用网络下,经常因为运营商屏蔽高位随机端口而连不上。两种方法:

  1. 改 SSH 端口:服务器改用 Port 2222 这种非标准端口,运营商通常不屏蔽。
  2. 用 QuickQ 中转:开发机 → QuickQ → 服务器。QuickQ 默认监听 4123/4124,运营商不会屏蔽这两个口。

VSCode 配置参考:

{
  "remote.SSH.configFile": "~/.ssh/config",
  "remote.SSH.useLocalServer": true,
  "remote.SSH.connectTimeout": 30
}
图 6.1 · JetBrains Gateway 走 QuickQ 的实测延迟

实测环境:macOS 14 + VSCode 1.95 + GitHub Enterprise 3.13。如果你的环境与本文差异较大,参数可能需要微调。