Mac 系统 VS Code SSH 远程连接服务器频繁崩溃解决办法
适用场景:Mac 上使用 VS Code 的 Remote-SSH 连接远程服务器,过一段时间后窗口崩溃或远程连接断开,弹出“窗口意外终止(原因:crashed,代码:-5)”。
1. 问题现象
最近在 Mac 上使用 VS Code 通过 SSH 连接远程服务器时,经常出现这样的问题:连接刚开始是正常的,可以打开远程目录、编辑代码、运行终端。但使用一段时间后,VS Code 窗口突然崩溃,弹出如下提示:
错误信息大致如下:
窗口意外终止(原因:"crashed",代码:"-5") 我们对此不便表示抱歉!请重启该窗口以从上次停止的位置继续。
一开始我以为只是服务器 SSH 连接断开,但从提示来看,这个问题不完全是 SSH 断线,更像是 VS Code 本地窗口进程崩溃,同时 Remote-SSH 连接也随之中断。
2. 可能原因
这个问题一般和下面几类原因有关:
- VS Code 硬件加速导致窗口渲染进程崩溃。
- Remote-SSH 在远端安装的 VS Code Server 状态异常。
- 网络、VPN、校园网、NAT 或防火墙空闲超时,导致 SSH 长连接被断开。
- 某些 VS Code 扩展占用资源过高,导致窗口或远程扩展宿主崩溃。
- 远程服务器内存、磁盘空间不足,VS Code Server 被系统杀掉。
我的解决思路是:先解决 VS Code 本地窗口崩溃,再处理 SSH 长连接保活。
3. 解决办法一:关闭 VS Code 硬件加速
Mac 上 VS Code 偶发窗口崩溃时,建议优先关闭硬件加速。
在 VS Code 中按下:
Command + Shift + P
搜索并打开:
Preferences: Configure Runtime Arguments
然后在打开的 argv.json 中加入下面配置:
{ "disable-hardware-acceleration": true }
如果文件里已经有其他配置,不要直接全部覆盖,只需要添加这一项即可。修改完成后,完全退出 VS Code,再重新打开。
这一步主要解决的是 VS Code 窗口渲染进程崩溃的问题。截图里的 crashed 和 code: 5 很多时候就和本地窗口进程异常有关。
4. 解决办法二:清理远端 VS Code Server
Remote-SSH 每次连接服务器时,都会在远程服务器用户目录下安装 VS Code Server。如果远端 Server 状态异常,也会导致连接不稳定。
在 VS Code 中按:
Command + Shift + P
然后依次尝试:
Remote-SSH: Kill VS Code Server on Host...
如果仍然不稳定,再执行:
Remote-SSH: Uninstall VS Code Server from Host...
之后重新连接服务器,VS Code 会自动重新安装远端 Server。
也可以在服务器终端中手动清理:
rm -rf ~/.vscode-server
如果你使用的是 VS Code Insiders,则可能是:
rm -rf ~/.vscode-server-insiders
然后重新用 Remote-SSH 连接即可。
5. 解决办法三:配置 SSH 保活
如果你的问题表现为“空闲一段时间后断开”,尤其是在校园网、公司网络、VPN 或跳板机环境下,很可能是网络设备把空闲 SSH 连接断掉了。
可以在 Mac 本机的 SSH 配置文件中加入保活参数:
vim ~/.ssh/config
添加或修改你的服务器配置:
Host my-server HostName 你的服务器IP或域名 User 你的用户名 ServerAliveInterval 30 ServerAliveCountMax 6 TCPKeepAlive yes
参数说明:
- ServerAliveInterval 30:每 30 秒向服务器发送一次保活包。
- ServerAliveCountMax 6:连续 6 次没有响应才认为连接断开。
- TCPKeepAlive yes:启用 TCP 层面的 keepalive。
也就是说,连接会在空闲时定期发送心跳包,避免被路由器、防火墙或 VPN 网关误判为空闲连接。
6. 解决办法四:排查 VS Code 扩展
如果关闭硬件加速、清理 VS Code Server 后仍然崩溃,可以排查扩展问题。
可以先用禁用扩展模式启动 VS Code:
code --disable-extensions
然后再连接远程服务器观察是否还会崩溃。
如果禁用扩展后稳定了,说明大概率是某个扩展导致的问题。可以重点排查这些扩展:
- Python
- Jupyter
- C/C++
- Copilot
- Pylance
- 大型语言服务器类扩展
- 远程开发相关扩展
建议逐个启用扩展,观察是哪一个扩展导致崩溃。
7. 解决办法五:检查服务器资源
如果远程服务器资源不足,VS Code Server 也可能被系统杀掉。
登录服务器后可以检查内存和磁盘:
free -h df -h
查看当前用户进程资源占用:
ps -u $USER -o pid,comm,%mem,%cpu --sort=-%mem | head
如果服务器有权限,也可以查看是否发生过 OOM:
dmesg -T | grep -i -E "killed process|oom|out of memory"
如果磁盘满了,或者内存长期不足,需要先释放空间、关闭不必要进程,或者联系服务器管理员提升资源配额。
8. 查看 Remote-SSH 日志
如果还是无法定位问题,可以查看 VS Code 的 Remote-SSH 日志。
在 VS Code 中按:
Command + Shift + P
搜索:
Remote-SSH: Show Log
重点看日志里是否有这些信息:
- 连接超时
- VS Code Server 安装失败
- permission denied
- 磁盘空间不足
- 远程进程异常退出
- SSH keepalive timeout
同时可以用 Mac 自带终端测试普通 SSH 是否稳定:
ssh my-server
如果普通 SSH 也会断,优先排查网络和服务器;如果普通 SSH 稳定,只有 VS Code Remote-SSH 崩溃,则重点排查 VS Code、扩展和远端 VS Code Server。
9. 我的最终处理步骤
我最后采用的是下面几步:
- 关闭 VS Code 硬件加速。
- 清理远端 ~/.vscode-server。
- 在 ~/.ssh/config 中加入 SSH keepalive。
- 重启 VS Code 后重新连接服务器。
配置完成后,VS Code 通过 SSH 连接服务器明显稳定了很多,不再频繁出现窗口崩溃和远程连接断开的情况。
10. 总结
Mac 上 VS Code Remote-SSH 频繁崩溃或断开时,不要只盯着 SSH 本身。截图中的“窗口意外终止”“crashed”“代码 5”说明 VS Code 本地窗口进程也可能参与了崩溃。
推荐按这个顺序排查:
- 关闭硬件加速。
- 清理远端 VS Code Server。
- 配置 SSH keepalive。
- 禁用扩展测试。
- 检查服务器资源。
- 查看 Remote-SSH 日志。
一般来说,前面三步就可以解决大部分 Mac + VS Code + Remote-SSH 频繁崩溃或断连的问题。