remote-ssh 卡在“setting up ssh host”阶段通常是因密钥认证失败、代理跳转异常、远程命令无响应或插件干扰所致,需结合 verbose 日志与系统状态排查。

Remote-SSH 插件本身卡在“Setting up SSH Host”阶段
这不是插件“崩溃”,而是它在等待某个阻塞操作完成,比如密钥认证、代理跳转或远程命令响应。VSCode 不会明确提示卡在哪一步,但日志里有线索。
打开命令面板(Ctrl+Shift+P),运行 Remote-SSH: Show Log (Verbose),重点看是否出现:
-
Permission denied (publickey):本地私钥没被读取(权限不是600,或IdentityFile路径写错) -
Connection closed by remote host:远程sshd主动拒接,常见于PubkeyAuthentication no或MaxStartups耗尽 -
ProxyCommand failed:跳转主机不可达,或中间节点上缺少nc/ssh命令
临时禁用所有非 Remote-SSH 插件(尤其是那些带终端注入、文件系统钩子的扩展),再重试——很多“断连”其实是其他插件干扰了 SSH 进程的 stdin/stdout 流。
远程端 vscode-server 被 OOM 杀死或僵死
VSCode Remote-SSH 在远程启动的 vscode-server 是个 Node.js 进程,它不只转发编辑器请求,还托管语言服务、文件监听、调试适配器。一旦远程机器内存吃紧(比如编译 C++ 项目 + 多窗口 + clangd 索引),它就可能被内核 OOM killer 干掉,或陷入无响应状态。
登录远程服务器后执行:
-
ps aux | grep -i 'vscode-server\|server-main':确认进程是否存在且 CPU/内存占用合理 -
tail -n 50 ~/.vscode-server/data/logs/*/*/exthost.log:查扩展是否反复报错、崩溃 -
df -h和free -h:磁盘满或内存不足是常见诱因,尤其~/.vscode-server下堆积大量out日志时
不要直接删整个 ~/.vscode-server;先 mv ~/.vscode-server ~/.vscode-server.bak,再在 VSCode 中运行 Remote-SSH: Kill VS Code Server on Host,最后重连触发干净重部署。
插件自动启用远程端口转发导致连接雪崩
某些插件(如 Docker、GitHub Pull Requests、Live Share)默认开启 remote.autoForwardPorts,会在远程监听大量端口并尝试反向绑定到本地。当远程机器防火墙严格、或本地端口被占满时,SSH 隧道会持续重试、积压连接,最终耗尽资源或触发 MaxSessions 限制。
在 VSCode 设置中显式关闭高风险行为:
"remote.autoForwardPorts": false"remote.restoreForwardedPorts": false-
"files.watcherExclude": {"**/node_modules/**": true, "**/.git/**": true}(减少文件监听压力)
也可以在远程 ~/.ssh/config 的对应 Host 块里加 ForwardAgent no 和 RequestTTY no,防止插件滥用代理和伪终端。
Remote-SSH 与系统 ssh-agent 冲突导致认证失败循环
VSCode Remote-SSH 默认使用自带的轻量级 ssh-agent,但它和系统级 ssh-agent(比如 macOS Keychain 或 Linux gnome-keyring)可能同时加载同一把密钥,造成签名冲突或锁竞争。现象是:终端 ssh 正常,但 VSCode 反复弹窗要输密码,或日志里出现 agent refused operation。
解决方式很直接:
- 在 VSCode 设置中启用
"remote.SSH.useLocalServer": true,强制走系统ssh二进制 - 或者在
~/.ssh/config对应 Host 块里加IdentityAgent none,绕过 agent,直读私钥文件 - 确保私钥权限为
600,且IdentityFile路径是绝对路径(Windows 上别用~)
真正麻烦的是多跳场景下各跳的 agent 配置不一致——这时宁可全关 agent,用 IdentityFile 显式指定每跳密钥。
插件引发的断连,90% 不是插件代码 bug,而是它放大了底层配置的脆弱点:密钥权限松、保活缺失、资源边界模糊、agent 状态混乱。盯住 vscode-server 进程和 ssh -v 日志,比翻插件文档管用得多。











